1

ストアドプロシージャの結果から一時テーブルを動的に作成できますか?

一時テーブルの列を手動で宣言したくありません。ストアドプロシージャの結果からテーブルのスキーマを取得する必要があります。

4

2 に答える 2

1

次の構文テンプレートを使用して、結果セットに基づいて一時テーブルを作成します。

Select * into #temptable from mytable


Select column1,column2,..columnn into #temptable from mytable

ノート:

このSELECT INTOステートメントは非常に高速です。理由の1つは、バックアップの目的でコマンドがログに記録されないことです。より正確には、コマンドはトランザクション内に含めることができ、ロールバックコマンドはその効果を正しく元に戻します。ただし、新しい値はログファイルに永続的に保存されるわけではないため、このコマンドを実行すると、データベースの完全バックアップのみを実行できます(増分バックアップではエラーが発生します)。これは、非一時テーブルに対してこの機能を明示的に有効にする必要がある理由を説明しています(一時テーブルはバックアップに含まれないためSELECT INTO、一時テーブルで使用する前にsp_dboptionコマンドを使用する必要はありません)。

于 2012-06-27T09:59:13.280 に答える
1

行セット関数の1つを使用します。

SELECT  *
INTO    #Temp
FROM    OPENQUERY(SERVERNAME, 'EXEC pr_StorProcName')
于 2012-06-27T10:16:40.520 に答える