SQLServer ストアドプロシージャの結果をSELECTする方法

2018.6.7

一時テーブルを利用する

手っ取り早い方法は、一時テーブルを作成することです。

一時テーブルを作らないと行けないので、手間がかかるデメリットがあります。

ストアドプロシージャの実行結果も確認しながらコーディングする場合は、一時テーブルを作成することによる副産物で方の確認が出来ることと、ストアドプロシージャの実行結果を確認しやすいメリットがあります。

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

一時テーブルかユーザ定義関数か

過去に作成したストアドプロシージャが存在していて、それを利用したい場合は、ユーザ定義関数を同じ仕様にしなければならないので、一時テーブルを利用する方法をおすすめします。