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 |