2020-01-07 更新

Transact-SQLでストアドプロシージャの結果を取得する(TABLE、INSERT - EXEC)

SQL ServerのTransact-SQLでストアドプロシージャの実行結果(SELECT)を取得する方法です。

普通にSQLっぽく記述すればできるだろうと思ったら、一旦テーブルに格納してあげないと取得できなかったので、メモとして残しておきます。

目次

  • 実行するストアドプロシージャ
  • Transact-SQL
  • SQLの実行結果

実行するストアドプロシージャ

Transact-SQLから呼び出すストアドプロシージャは以下の通りです。


CREATE PROCEDURE sp_test1
    @param1 nvarchar(50),   
    @param2 nvarchar(50)
AS
BEGIN
	DECLARE @a nvarchar(100);

	SET @a = @param1 + @param2;

	SELECT @a, LEN(@a);
END

サンプルなのでなんでもよかったのですが、今回は入力された2つの文字列パラメータを連結したものとその文字数を返しているだけです。

Transact-SQL

上記のストアドプロシージャを呼び出して利用するTransact-SQLは以下のようになります。


-- ストアドプロシージャの実行結果格納テーブル
DECLARE @test_data TABLE(
	return_str nvarchar(100),
	cnt int
);

-- ストアドの実行と結果の挿入
INSERT INTO @test_data(return_str, cnt) 
EXEC sp_test1 @param1 = 'aaa', @param2 = 'bbb';

-- 格納したデータ
SELECT * FROM @test_data;

-- 戻り値の取得と変数へのセット
DECLARE @a nvarchar(100);
SELECT @a = return_str FROM @test_data;

-- 変数の出力
SELECT @a AS 変数a;

SQLの実行結果

上記のTransact-SQLを実行した結果は以下の通りです。

return_str cnt
aaabbb 6
変数a
aaabbb

SQL Server】関連記事