19

ストアドプロシージャの実行と、その結果またはパラメータを通常のSQLクエリで使用することを組み合わせるにはどうすればよいですか?

たとえば、次のようなことをしたいと思います。

-- passing result of SELECT to SP
SELECT a, b FROM t
EXEC my_sp a, b

-- passing result of SP to INSERT    
INSERT INTO t
EXEC my_sp a, b

4

2 に答える 2

25

いいえ、一時テーブルを使用する必要があります

create table #results (col1 int, col2 varchar(5) ...)

INSERT INTO #results
   EXEC YourProcedure @parma...

その後、あなたはそれに参加することができます

SELECT
    *
    FROM YourTable     y
        JOIN #results  r ON ...
    ....

プロシージャの列とデータ型がわからない場合は、この優れた回答を使用できます:ストアド プロシージャの結果を一時テーブルに挿入する

簡単に言えばOPENROWSET、すべての列に名前を付けて型を知る必要なく、その場で作成される #temp テーブルにストアド プロシージャを実行するために使用します。

于 2010-04-01T19:40:55.853 に答える
4

SP をインライン テーブル値の UDF として書き直すことができる場合、これらは通常非常にうまく機能し、パラメーター化されたビューと同等です。ITVF は、テーブルまたはビューを使用するあらゆる場所で使用できます。

SP がインライン TVF (ローカル変数の操作が必要) として機能しない場合、マルチステートメント TVF (BEGIN/END を含む) として機能する可能性があります。

SP が UDF に変換された後でも、SP (SELECT* FROM udf(params)) から UDF を呼び出すことができます。または、結合などに使用できる他の場所で、すべてのコードが UDF 内にあります。複製。

于 2010-04-01T20:46:23.267 に答える