获取临时表的结构(如生成sql脚本)并清除当前实例的临时表

问题描述 投票:54回答:6

如何获取临时表的结构然后删除临时表。临时表是否有sp_helptext?最后是否可以在同一会话或查询窗口中删除临时表? 例:

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

tempdb..sp_help #myTempTable

Reference

sql-server tsql sql-server-2000
6个回答
102
投票

您需要在临时表名称周围使用引号,并且可以在使用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

9
投票

只要我知道表没有SP_HelpText。试试这个:

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

8
投票

我需要能够在脚本中重新创建临时表,因此我使用此代码生成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


3
投票

exec sp_columns table_name;

exec sp_columns员工;


2
投票
Select * From tempdb.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '#yourtemp%'

0
投票

所以,这对我有所帮助。它创建了Table列。

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
)

那会解决我的问题,但我很紧张

© www.soinside.com 2019 - 2024. All rights reserved.