重複の可能性:
関数を使用した SQL クエリでエラーが発生する
関数を作成しようとすると、次のエラーが発生します。
'CREATE FUNCTION' は、クエリ バッチの最初のステートメントである必要があります。
エラー:
キーワード「with」付近の構文が正しくありません。
このステートメントが共通テーブル式、xmlnamespaces 句、または変更追跡コンテキスト句である場合、前のステートメントはセミコロンで終了する必要があります。スカラー変数「@sep」を宣言する必要があります。
これは私のT-SQLコードです:
CREATE FUNCTION [dbo].[fn_Split] (@sep nvarchar(10), @s nvarchar(4000))
RETURNS table
AS
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + (datalength(@sep)/2), CHARINDEX(@sep, @s, stop + (datalength(@sep)/2))
FROM Pieces
WHERE stop > 0
)
SELECT pn,
SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 4000 END) AS value
FROM Pieces
)
;