ホームページ >データベース >mysql チュートリアル >SQL `exec` コマンドの結果を変数に割り当てるにはどうすればよいですか?

SQL `exec` コマンドの結果を変数に割り当てるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-05 05:15:46964ブラウズ

How Can I Assign the Results of an SQL `exec` Command to a Variable?

出力パラメータを使用して実行結果を SQL 変数に割り当てる

SQL では、ストアド プロシージャと関数を実行するために exec コマンドがよく使用されます。あなたが提案したような式 ("exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1") を使用して exec 呼び出しの結果を変数に直接割り当てることはできませんが、この機能を実現する代替方法があります。

推奨されるアプローチの 1 つは、出力パラメーターを使用することです。出力パラメーターを使用すると、変数を入力として渡すだけでなく、ストアド プロシージャまたは関数から返された値で変数を更新することもできます。その方法は次のとおりです:

出力パラメーターを使用してストアド プロシージャを作成します:

CREATE PROCEDURE YourStoredProcedure(
    @Param1 int,
    @Param2 varchar(5),
    @Param3 datetime OUTPUT
)
AS
    IF ISNULL(@Param1, 0) > 5
    BEGIN
        SET @Param3 = GETDATE()
    END
    ELSE
    BEGIN
        SET @Param3 = '1/1/2010'
    END
    
    RETURN 0
GO

この例では、@Param3 パラメーターが出力として宣言されています。パラメータ。ストアド プロシージャによって返された値で更新されます。

出力パラメータを使用したスト​​アド プロシージャの呼び出し:

DECLARE @OutputParameter datetime
       ,@ReturnValue     int

EXEC @ReturnValue = YourStoredProcedure 1, NULL, @OutputParameter OUTPUT

PRINT @ReturnValue
PRINT CONVERT(char(23), @OutputParameter, 121)

この例では、 @OutputParameter変数が宣言され、出力パラメーターとしてストアド プロシージャに渡されます。 exec 呼び出しの後、@OutputParameter 変数にはストアド プロシージャによって返された結果が含まれ、コンソールに出力されます。

出力:

0
2010-01-01 00:00:00.000

出力パラメーターを使用すると、SQL でストアド プロシージャとクライアント アプリケーションの間で値を渡すための堅牢かつ効率的な方法が提供されます。

以上がSQL `exec` コマンドの結果を変数に割り当てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。