我在SQL Server 2005中進行分割函數。如何在SQL SERVER 2005中使用遞歸表值函數
我已經通過使用while循環完成了它。
但我對此並不滿意。我想用遞歸函數來做。
我已經在C#中完成了它。 現在我在SQL SERVER 2005中繪製了相同的圖表,但是我收到了一個編譯錯誤。
這裏是我的代碼
ALTER FUNCTION [dbo].[fnSplit2]
(
@OLDSTRING AS VARCHAR(100),
@DELIMETER AS VARCHAR(1)
)
RETURNS @MYTABLE TABLE(COUNTER INT,STRINGVAL VARCHAR(100))
AS
Begin
DECLARE @NEWSTRING AS VARCHAR(100)
DECLARE @POS AS INT
DECLARE @LEN AS INT
DECLARE @COUNTER AS INT
SET @NEWSTRING = '';
SET @LEN = LEN(@OLDSTRING)
SET @COUNTER = 0
SET @POS = CHARINDEX(@DELIMETER, @OLDSTRING)
IF(@POS > 0)
BEGIN
SET @COUNTER = @COUNTER +1
INSERT INTO @MYTABLE(COUNTER,STRINGVAL) VALUES(@COUNTER,@NEWSTRING + SUBSTRING(@OLDSTRING,0, @POS))
SET @OLDSTRING = SUBSTRING(@OLDSTRING,0, @POS)
fnSplit2(@OLDSTRING,@DELIMETER);
END
ELSE
BEGIN
SET @COUNTER = @COUNTER +1
INSERT INTO @MYTABLE(COUNTER,STRINGVAL) values(@COUNTER,@OLDSTRING)
END
RETURN
END
的錯誤是: 消息102,級別15,狀態1,過程fnSplit2 38行 附近有語法錯誤fnSplit2「。
我不能在SQL SERVER中使用遞歸表值函數嗎?
我在谷歌搜索,發現標量值的遞歸函數是可能的?
請提供代碼並同時告訴我我正在犯的錯誤。
感謝您的幫助!
爲什麼世界上你會從迭代版本切換到遞歸版本?所以你不僅會招致更多的內存開銷,而且我們不要忘記你正在運行這個* IN * SQL SERVER>。 – 2009-06-06 15:18:28