Сообщение 102, Уровень 15, Состояние 1, Процедура, Строка 40 Неверный синтаксис рядом с '(' - PullRequest
4 голосов
/ 16 ноября 2011
select * from dbo.split(RTRIM(@importRow), '¬')

выдает ошибку:

Сообщение 102, Уровень 15, Состояние 1, Процедура имя_процесса, строка 40
Неверный синтаксис рядом с '('.

Каков правильный синтаксис для этой строки? Прошло много времени с тех пор, как я правильно выполнил SQL и не могу всю жизнь заставить эту часть сценария выполнить!

Использование SQL Server 2005

Прошу прощения за Заголовок. Не совсем уверен, что поставить кроме этого или "Синтаксическая ошибка"!

Редактировать: Код для разделения:

CREATE FUNCTION [dbo].[Split]
(
        @String VARCHAR(4000),
        @Delimiter VARCHAR(5)
)
RETURNS @SplittedValues TABLE
(
  OccurenceId SMALLINT IDENTITY(1,1),
  SplitValue VARCHAR(4000)
)
AS
BEGIN
DECLARE @SplitLength INT

WHILE LEN(@String) > 0
BEGIN
        SELECT @SplitLength = (CASE CHARINDEX(@Delimiter,@String) WHEN 0 THEN
LEN(@String) ELSE CHARINDEX(@Delimiter,@String) -1  END)

        INSERT INTO @SplittedValues
        SELECT SUBSTRING(@String,1,@SplitLength)

        SELECT @String = (CASE (LEN(@String) - @SplitLength) WHEN 0 THEN ''
ELSE RIGHT(@String, LEN(@String) - @SplitLength - 1) END)
END
RETURN
END
GO

Икод для начала процедуры

CREATE PROCEDURE dbo.[procedure] 
-- Add the parameters for the stored procedure here
@RETURN_VALUE int,
@importRow VarChar(8000)
......

1 Ответ

3 голосов
/ 16 ноября 2011

Переместить RTRIM в саму UDF (на основе комментариев)

В любом случае это хорошая практика, поэтому при каждом использовании split UDF не требуется RTRIM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...