ストアド プロシージャを変更しないとできません。
SQL Server では、INSERT...EXEC
を使用して、ストアド プロシージャの最初の結果セットのみを別のテーブルに挿入できます。 .列数と位置は正確に一致する必要があり、INSERT...EXEC
つまり、proc1 から proc2 のテーブルに挿入してから、proc2 から proc3 のテーブルに挿入することはできません。だから INSERT...EXEC
はまったく満足のいく解決策ではありません。
回避策は、プロシージャを変更して、呼び出しスコープで定義された一時テーブルに結果を挿入することです。例:
create proc get_some_data as insert #temp1 (col1, col2) select col1, col2 from table1 insert #temp2 (colA, colB) select colA, colB from table2 go create table #temp1 (col1 int, col2 int) create table #temp2 (colA int, colB int) exec get_some_data select * from #temp1 select * from #temp2 drop table #temp1 drop table #temp2 go
プレ>手順を変更できない場合は、
不運です。訂正 :HABO が親切に指摘したように、できます CLR を使用して結果セットを反復処理します。詳細については、以下のリンクを参照してください。自分が何をしているのかを知っていて、他に選択肢がないのであれば、それほど悪くはありません.ストアド プロシージャ間でのデータ共有の詳細については、Erland Sommarskog による次の非常に包括的な記事を参照してください。 www.sommarskog.se/share_data.html