呼び出したストアドプロシジャーの戻り値を使用する

記事内に広告が含まれています。

処理の構成上、ストアドプロシジャーから他のストアドプロシジャーを呼び出してその処理結果を使用したい場合が発生します。

そんな時に役立つテクニックです。

呼び出したストアドプロシジャーの戻り値を使用する

処理の構成上、ストアドプロシジャーから他のストアドプロシジャーを呼び出してその処理結果を使用したい場合が発生します。

そんな時に役立つテクニックです。

呼び出されるストアドプロシジャーを作成する

まず、呼び出される側のストアドプロシジャーを作成します。

内容を簡単にするために与えられた引数と、それに+1だけする結果を返すストアドにします。

CREATE PROCEDURE [dbo].[test_called_proc] 
    @num INT = 10
AS
BEGIN

    SELECT
        @num AS no
    UNION
    SELECT
        @num+1 AS no
    ORDER BY
        no
END

このストアドプロシジャーを呼び出すと

EXEC test_called_proc @num=20

結果は

no
20
21

となります。

ストアドプロシジャーの実行結果を呼び出し側で利用する

今度はこの「test_called_proc @num=20」の実行結果の値を使って新しい処理結果を作成します。

呼び出したストアドプロシジャーの実行結果を利用するにはテンポラリテーブルを作ってその中に呼び出したストアドプロシジャーの実行結果を保存して使用します。

--テンポラリテーブル作成
CREATE TABLE #test_tmp
(
    no   INT
)

--ストアドプロシジャーを実行してテンポラリテーブルに保存
INSERT INTO #test_tmp EXEC test_called_proc @num=20

--テンポラリテーブルのnoに0を足して表示
SELECT
    no + 20 AS no
FROM
    #test_tmp
ORDER BY
    no

--念のためテンポラリーテーブル削除
DROP TABLE #test_tmp

上記の実行結果は

no
40
41

となりストアドプロシジャーの実行結果を呼び出した側で使用することができました。

注意事項

作成するテンポラリテーブルの構成は呼び出すストアドプロシジャーが返す列の数、属性が一致している必要があります。

タイトルとURLをコピーしました