我正在 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 中使用递归表值函数吗?
我在谷歌搜索,发现标量值递归函数是可能的?
请提供代码,同时告诉我我正在犯的错误。
感谢任何帮助!