我在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