私のためには機能しません。
私の場合は、テーブル値のユーザー定義関数のRETURN句でCTE値を使用しています。 BEGIN-ENDでRETURN節をラップすると、同じエラーメッセージが表示されますが、裸のRETURN()節は正常に機能します。この場合、エラーメッセージが間違っていると思います。
これは動作します:
CREATE FUNCTION [dbo].[ft_SplitStringOnChar]
(
@s varchar(8000),
@sep char(1)
)
RETURNS TABLE
AS
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT pn AS TokenNumber,
SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS TokenString
FROM Pieces
)
GO
This does not:
CREATE FUNCTION [dbo].[ft_SplitStringOnChar]
(
@s varchar(8000),
@sep char(1)
)
RETURNS TABLE
AS
BEGIN
;
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT pn AS TokenNumber,
SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS TokenString
FROM Pieces
)
END
GO
同じすぎて、SQL Server 2008のMERGE文のために行く - それは** **セミコロンで終了する必要があります! –
gbn、あなたは私の隠れ家を救った。 Delphiのクエリコンポーネントでこのエラーが発生しました。再度、感謝します。そしてあなたはダンカン。 –