web-dev-qa-db-ja.com

一時テーブルの構造を取得し(SQLスクリプトを生成するなど)、現在のインスタンスの一時テーブルをクリアする

一時テーブルの構造を取得して、一時テーブルを削除するにはどうすればよいですか。一時テーブル用のsp_helptextはありますか?最後に、同じセッションまたはクエリウィンドウで一時テーブルを削除することは可能ですか?

例:

select *
into #myTempTable  -- creates a new temp table
from tMyTable  -- some table in your database

tempdb..sp_help #myTempTable

参照

55
RetroCoder

一時テーブル名を引用符で囲む必要があり、drop table ...を使用した後、一時テーブルを直接削除できます。

select *
into #myTempTable  -- creates a new temp table
from tMyTable  -- some table in your database

exec tempdb..sp_help '#myTempTable'

drop table #myTempTable
103
Mikael Eriksson

私が知っている限り、テーブル用のSP_HelpTextはありません。これを試して:

Select * From tempdb.sys.columns Where object_id=OBJECT_ID('tempdb.dbo.#myTempTable');
10
Geri Reshef

スクリプトで一時テーブルを再作成できるようにする必要があったため、このコードを使用してCREATE TABLEステートメントの列部分を生成しました。

SELECT char(9) + '[' + c.column_name + '] ' + c.data_type 
   + CASE WHEN c.data_type IN ('decimal')
      THEN isnull('(' + convert(varchar, c.numeric_precision) + ', ' + convert(varchar, c.numeric_scale) + ')', '') 
      ELSE '' END
   + CASE WHEN c.IS_NULLABLE = 'YES' THEN ' NULL' ELSE '' END
   + ','
From tempdb.INFORMATION_SCHEMA.COLUMNS c 
WHERE TABLE_NAME LIKE '#myTempTable%' 

すべてのsqlデータ型をテストしたわけではありませんが、int、float、datetime、money、およびbitで機能しました。

また、- ApexSQL Complete (無料)には、グリッド結果をInsert Intoステートメントにエクスポートできる素晴らしい機能があります。これを使用して、作成したこの一時テーブルをスクリプトにロードしました。 ApexSQL Copy Results As Insert into statement

9
dajo

exec sp_columns table_name;

exec sp_columns employees;

3
Ravi Kumar
Select * From tempdb.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '#yourtemp%'
2
flyreaver

だから、これは私を助けた。テーブル列を作成しました。

Select Column_Name + ' [' + DATA_TYPE + ']' + 
case when Data_Type in ('numeric', 'varchar', 'char')
    then '(' +
        case
            when DATA_TYPE = 'numeric' then CAST(numeric_precision as varchar(3)) + ',' + CAST(numeric_scale as varchar(3))
            when DATA_TYPE = 'varchar' then CAST(CHARACTER_MAXIMUM_LENGTH as varchar(3))
            when DATA_TYPE = 'char' then CAST(CHARACTER_MAXIMUM_LENGTH as varchar(3))
        end
         + ')'
    else ''
end
+ ','
, * 
From tempdb.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME LIKE '#MEHTEMPTABLE%'

その後、これらのアイテムをテーブル宣言にコピーするだけでした。

Declare @MyTable Table
(
--All columns here
)

それは私の問題を解決したでしょうが、私は時間に追われました

0
Gawie Greef