SQLServer ストアドプロシージャの結果をSELECTする方法
一時テーブルを利用する
手っ取り早い方法は、一時テーブルを作成することです。
一時テーブルを作らないと行けないので、手間がかかるデメリットがあります。
ストアドプロシージャの実行結果も確認しながらコーディングする場合は、一時テーブルを作成することによる副産物で方の確認が出来ることと、ストアドプロシージャの実行結果を確認しやすいメリットがあります。
CREATE TABLE #temp (
col char(1)
)
INSERT INTO #temp EXEC sp_test
SELECT
*
FROM
#temp
WHERE
kind = 1
ユーザ定義関数を使う
少し手間を掛けて良いなら、ユーザ定義関数を作成する方法があります。
SELECT する処理はシンプルになりますが、ユーザ定義関数を作らないと行けないのがデメリットです。
自由にユーザ定義関数を作って良い現場ならこの方法もありです。
一度作れば他の SELECT で使用するときもシンプルに書けるので再利用がしやすいです。
create function funcA
returns @res TABLE (
kubun char(1)
) as
begin
insert @res select col
from tablea as t with(nolock)
where kind = @kubun;
return;
end;
go
一時テーブルかユーザ定義関数か
過去に作成したストアドプロシージャが存在していて、それを利用したい場合は、ユーザ定義関数を同じ仕様にしなければならないので、一時テーブルを利用する方法をおすすめします。