消息102,级别15,状态1,过程<procedure_name>,第40行'('</procedure_name>附近的语法不正确

时间:2011-11-16 13:49:51

标签: sql sql-server sql-server-2005

select * from dbo.split(RTRIM(@importRow), '¬')

给出错误:

  

Msg 102,Level 15,State 1,Procedure proc_name,Line 40
  '('。

附近的语法不正确

这条线的正确语法是什么?已经有一段时间了,因为我已经正确地完成了SQL,并且在我的生活中不能让这部分脚本执行!

使用SQL Server 2005

我为标题道歉。不太确定除了那个或“语法错误”之外要放什么!

编辑:SPLIT的代码:

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 个答案:

答案 0 :(得分:3)

将RTRIM移动到UDF本身(基于注释)

这是一种很好的做法,所以每次使用split UDF都不需要RTRIM