1

SQL Server 2000 で SQL Server 関数を作成しています。構文は次のようになります。

ALTER FUNCTION dbo.test()
RETURNS TABLE
AS
RETURN 
(
  DECLARE @A VARCHAR(100)
  DECLARE @B VARCHAR(100)
  SELECT @A='abc', @B='bca'
  SELECT A=@A, B=@B  
)

変数を宣言して戻り値として選択しようとしていますが、次のエラー メッセージが表示されます。

Msg 156, Level 15, State 1, Procedure test, Line 6
Incorrect syntax near the keyword 'DECLARE'.
Msg 170, Level 15, State 1, Procedure test, Line 10
Line 10: Incorrect syntax near ')'.

変数宣言を受け入れないようです。どうしたの?前もって感謝します。

4

1 に答える 1

3

あなたの構文はインラインテーブル関数用です。マルチステートメントテーブル関数が必要な場合は、複数のステートメントを使用します。

CREATE FUNCTION dbo.test()
RETURNS @returntable TABLE 
(
    A VARCHAR(100),
    B VARCHAR(100)
)
AS
BEGIN
    DECLARE @A VARCHAR(100)
    DECLARE @B VARCHAR(100)
    SELECT @A='abc', @B='bca'
    INSERT INTO @returntable 
    VALUES(@A, @B)
    RETURN 
END

関数の作成

更新:
インライン テーブル関数が必要な場合は、select ステートメントを 1 つだけにする必要があります。

CREATE FUNCTION dbo.test2()
RETURNS TABLE AS RETURN
(
    SELECT 'abc' AS A, 'bca' AS B
)
于 2012-04-20T11:00:39.973 に答える