-1

ストアド プロシージャの結果を一時テーブルに格納する必要があります。ただし、ストアド プロシージャの結果は、任意の列順序の任意のテーブルになる可能性があります。

任意のテーブルを挿入できる一般的なテーブル (列が指定されていない) はありますか? 関数を使用できることはわかっていますが、ストアド プロシージャを使用することは可能ですか?

これはコードです:

begin transaction

create table temp_table as

exec my_store_proc 1,111

select * from temp_table

drop table temp_table

commit transaction

上記のコードでは、my_store_proc結果は 6 列のテーブルです (例)

4

3 に答える 3

2

このようなアプローチを使用できます。

declare @t table(ID int, Name nvarchar(max), AnotherId int)

insert @t
exec theStoredProc

-- then you can utilize the result in a join

select * from SomeTable inner join @t as t on SomeTable.ID =  t.ID.... 
于 2012-10-08T11:57:50.417 に答える
1

procecureでは不可能なため、関数を1つだけ使用することをお勧めします。戻り値の型テーブルを持つ関数を作成し、それを使用すると正常に動作します。

これを行うことはできますが、列の順序は制御されていません

--INSERT...EXECUTE procedure example
 INSERT @temptable EXECUTE proceudrename
于 2012-10-08T11:29:26.617 に答える
-1



この開始トランザクションを試してください

create table @tmp (フィールドは my_store_proc プロシージャで定義します)

@tmp exec my_store_proc 1,111 に挿入します

select * from @tmp

トランザクションをコミットする

于 2012-10-08T13:07:10.677 に答える