Я делаю функцию разделения в 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?
Я искал в Google и обнаружил, что возможны скалярные рекурсивные функции?
Пожалуйста, предоставьте код и в то же время сообщите мне об ошибке, которую я совершаю.
Благодарим за любую помощь!