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
ERRORは次のとおりです。 メッセージ102、レベル15、状態1、プロシージャfnSplit2、ライン38 付近に正しくない構文 'fnSplit2'。
SQL SERVERで再帰的なテーブル値関数を使用することはできませんか?
私はGoogleで検索し、スカラー値の再帰関数が可能であることを発見しましたか?
コードを入力すると同時に私が作っている間違いを教えてください。
何か助けてもらえますか?
なぜ、反復的なバージョンから再帰的なバージョンに切り替えるのですか?したがって、メモリオーバーヘッドが増えるだけでなく、* IN * SQL SERVER>を実行していることを忘れないでください。 –
要件はそうですか? 再帰CTEを使用することはできますか? 私を助けてください。 –
文字列分割関数を再帰的に書く必要がありますか?まあ、私を許してください。でも、それはうんざりのようですね。 –