ストアドプロシージャの結果から一時テーブルを動的に作成できますか?
一時テーブルの列を手動で宣言したくありません。ストアドプロシージャの結果からテーブルのスキーマを取得する必要があります。
ストアドプロシージャの結果から一時テーブルを動的に作成できますか?
一時テーブルの列を手動で宣言したくありません。ストアドプロシージャの結果からテーブルのスキーマを取得する必要があります。
次の構文テンプレートを使用して、結果セットに基づいて一時テーブルを作成します。
Select * into #temptable from mytable
Select column1,column2,..columnn into #temptable from mytable
ノート:
このSELECT INTO
ステートメントは非常に高速です。理由の1つは、バックアップの目的でコマンドがログに記録されないことです。より正確には、コマンドはトランザクション内に含めることができ、ロールバックコマンドはその効果を正しく元に戻します。ただし、新しい値はログファイルに永続的に保存されるわけではないため、このコマンドを実行すると、データベースの完全バックアップのみを実行できます(増分バックアップではエラーが発生します)。これは、非一時テーブルに対してこの機能を明示的に有効にする必要がある理由を説明しています(一時テーブルはバックアップに含まれないためSELECT INTO
、一時テーブルで使用する前にsp_dboptionコマンドを使用する必要はありません)。
行セット関数の1つを使用します。
SELECT *
INTO #Temp
FROM OPENQUERY(SERVERNAME, 'EXEC pr_StorProcName')