ホームページ >データベース >mysql チュートリアル >SQL コードとストアド プロシージャ間で値を渡すにはどうすればよいですか?

SQL コードとストアド プロシージャ間で値を渡すにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-03 17:41:39181ブラウズ

How Can I Pass Values Between SQL Code and Stored Procedures?

SQL コードとストアド プロシージャ間での値の受け渡し

SQL を使用する場合、exec 呼び出しの結果を変数に割り当てることが必要になる場合があります。このシナリオでは、up_GetBusinessDay の出力を @PreviousBusinessDay という変数に割り当てます。

実行結果を直接割り当てることの制限

実行結果を変数に直接割り当てるのは論理的であるように思えるかもしれませんが、変数の場合、このアプローチは SQL ではサポートされていません。その理由は、exec ステートメントは、値を返さずにストアド プロシージャを実行するために使用されるためです。したがって、実行結果を変数に直接割り当てることはできません。

出力パラメータの使用

ストアド プロシージャから単一の値を返すには、出力パラメータを使用できます。出力パラメーターを使用すると、ストアド プロシージャによって返される値を受け取る変数を指定できます。 SQL Server で出力パラメータを作成して使用する方法は次のとおりです。

ストアド プロシージャの定義:

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

ストアド プロシージャ呼び出し:

DECLARE @OutputParameter datetime
       ,@ReturnValue     int

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

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

出力:

0
2010-01-01 00:00:00.000

出力パラメーターを使用すると、実行呼び出しの結果を変数に効率的に割り当てることができます。 。この手法は、ストアド プロシージャから単一の値を取得する必要がある場合によく使用されます。

以上がSQL コードとストアド プロシージャ間で値を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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