【发布时间】:2017-05-17 20:37:31
【问题描述】:
我有一个存储过程,我在其中创建了几个临时表。如何获取在该存储过程中创建的那些临时表的列表?
类似这样的:
SELECT [# temporary table name]
FROM sys.procedures
WHERE name = '<Stored Procedure Name>'
我想要这个结果
Temporary_Table_Name
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#TemporaryTable1
#TemporaryTable2
.
.
.
#TemporaryTableN
(N row(s) affected)
然后,使用该列表,我想动态构建 DROP TABLE 指令。
Dinamic_DROP_Instruction
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF OBJECT_ID('tempdb..#TemporaryTable1') IS NOT NULL DROP TABLE #TemporaryTable1
IF OBJECT_ID('tempdb..#TemporaryTable2') IS NOT NULL DROP TABLE #TemporaryTable1
.
.
.
IF OBJECT_ID('tempdb..#TemporaryTableN') IS NOT NULL DROP TABLE #TemporaryTableN
(N row(s) affected)
【问题讨论】:
-
为什么需要动态执行此操作?对您的过程执行 control+F,找到所有临时表,然后在开头写入(或复制/粘贴)您的条件 drop 和/或 table drops 在末尾。
-
@dfundako 这是一个经常性且非常手动的过程,在大型程序中可能需要大量时间。否则找到“#”可能是在创建临时表时,就像在使用它们一样,这不是我需要的。
-
@marc_s 也许你知道我怎样才能得到这个脚本?
-
给没有评论过这个话题的人添加句柄不会通知他们
-
@dfundako 我要解决我自己的问题,请检查一下!
标签: sql sql-server tsql stored-procedures temp-tables