Ret*_*der 56 t-sql sql-server sql-server-2000
如何获取临时表的结构然后删除临时表.临时表是否有sp_helptext?最后是否可以在同一会话或查询窗口中删除临时表?
例:
select *
into #myTempTable -- creates a new temp table
from tMyTable -- some table in your database
tempdb..sp_help #myTempTable
Run Code Online (Sandbox Code Playgroud)
参考.
Mik*_*son 105
您需要在临时表名称周围使用引号,并且可以在使用后直接删除临时表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
Run Code Online (Sandbox Code Playgroud)
Ger*_*hef 10
只要我知道表没有SP_HelpText.试试这个:
Select * From tempdb.sys.columns Where object_id=OBJECT_ID('tempdb.dbo.#myTempTable');
Run Code Online (Sandbox Code Playgroud)
daj*_*ajo 10
我需要能够在脚本中重新创建临时表,因此我使用此代码生成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) + ')', '')
WHEN c.data_type IN ('varchar', 'nvarchar', 'char', 'nchar')
THEN isnull('('
+ CASE WHEN c.character_maximum_length = -1
THEN 'max'
ELSE convert(varchar, c.character_maximum_length)
END + ')', '')
ELSE '' END
+ CASE WHEN c.IS_NULLABLE = 'YES' THEN ' NULL' ELSE '' END
+ ','
FROM tempdb.INFORMATION_SCHEMA.COLUMNS c
WHERE TABLE_NAME LIKE '#myTempTable%'
ORDER BY c.ordinal_position
Run Code Online (Sandbox Code Playgroud)
我没有测试所有sql数据类型,但这适用于int,float,datetime,money和bit.
此外 - ApexSQL Complete(免费)有一个很好的功能,您可以将网格结果导出到一个Insert Into语句中.我用它在我的脚本中加载这个创建的临时表.

获取临时表的结构
\n\n\n\n我们中的许多人都会使用常见的方法,例如键盘快捷键 \xe2\x80\x93 \xe2\x80\x98Alt+F1\xe2\x80\x98 或使用 \xe2\x80\x98SP_HELPTEXT\xe2\x80\x98 命令(还有很多其他命令)方法也有)来查看物理表的结构。众所周知,查看临时表的结构并不像查看物理表的结构那么常见。我们将看到,如何在 SQL Server 中轻松查看临时表的结构。下面提到的方法适用于 Azure SQL DB 和本地。
\n\n演示 SQL 脚本
\n\nIF OBJECT_ID(\'TempDB..#TempTable\') IS NOT NULL\n DROP TABLE #TempTable;\n\nSELECT 1 AS ID,\'Arul\' AS Names\nINTO\n#TempTable;\n\nSELECT * FROM #TempTable;\nRun Code Online (Sandbox Code Playgroud)\n\n方法 1 \xe2\x80\x93 使用 SP_HELP
\n\nEXEC TempDB..SP_HELP #TempTable;\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n笔记-
\n\n在表结构中,表名称显示类似 \xe2\x80\x98#TempTable_______________________________________________________________________________________________________________________0000000004CB\xe2\x80\x99。实际上,每个临时表名称的总长度将为 128 。为了以不同方式处理多个会话中的相同临时表名称,SQL Server 将自动在中间添加一些下划线,并在末尾添加字母数字\xe2\x80\x99s。
\n\n方法 2 \xe2\x80\x93 使用 SP_COLUMNS
\n\nEXEC TempDB..SP_COLUMNS \'#TempTable\';\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n方法 3 \xe2\x80\x93 使用系统表,例如 INFORMATION_SCHEMA.COLUMNS、SYS.COLUMNS、SYS.TABLES
\n\nSELECT * FROM TempDB.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME IN (\nSELECT NAME FROM TempDB.SYS.TABLES WHERE OBJECT_ID=OBJECT_ID(\'TempDB.dbo.#TempTable\')\n);\nGO\n\nSELECT * FROM TempDB.SYS.COLUMNS WHERE OBJECT_ID=OBJECT_ID(\'TempDB.dbo.#TempTable\');\nGO\n\nSELECT * FROM TempDB.SYS.TABLES WHERE OBJECT_ID=OBJECT_ID(\'TempDB.dbo.#TempTable\');\nGO\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n清除当前实例的临时表
\n\nIF OBJECT_ID(\'TempDB..#TempTable\') IS NOT NULL\n DROP TABLE #TempTable;\nRun Code Online (Sandbox Code Playgroud)\n
小智 5
Select * From tempdb.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '#yourtemp%'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68653 次 |
| 最近记录: |