2011-11-16 88 views
4
select * from dbo.split(RTRIM(@importRow), '¬') 

給出了錯誤:消息102,級別15,狀態1,過程<過程名>,行40附近有語法錯誤('

Msg 102, Level 15, State 1, Procedure proc_name, Line 40
Incorrect syntax near '('.

什麼是此行的正確語法這是一個同時,因爲我做了正確的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) 
...... 
+0

如果你co把這條線出去?行號並不總是與實際行相匹配。 – gbn

+0

您是否試圖執行''select dbo.split(RIMIM(@importRow),'←')? –

+0

@gbn:有趣的是,當我雙擊錯誤時,這就是它所得到的路線。這是第52行(ish)實際的行是空行 – JustAnotherDeveloper

回答

3

移動RTRIM到UDF本身的代碼(基於評論)

這無論如何都是很好的做法,所以split UDF的每一次使用都不需要RTRIM

相關問題