使用SELECT .. INTO语句创建一个临时表
DROP TABLE IF EXISTS #MyTempTable
在数据库,tempdb,临时表下我看到了temp表 dbo。#MyTempTable ____________________ 0000000016CA
现在我要放桌子。我尝试了以下方法:
IF OBJECT_ID('tempdb..#MyTempTable') IS NOT NULL
BEGIN
DROP TABLE #MyTempTable
END
AND
SELECT OBJECT_ID('tempdb..#MyTempTable')
两个都没有删除表
Select返回NULL:
{{1}}
答案 0 :(得分:0)
您可以将技巧与OBJECT_ID配合使用。
但是请确保检查的表是否存在与您删除的表相同。
IF OBJECT_ID('tempdb..#MyTempTable', 'U') IS NOT NULL
BEGIN
DROP TABLE #MyTempTable;
END
或简化为:
IF OBJECT_ID('tempdb..#MyTempTable', 'U') IS NOT NULL
DROP TABLE #MyTempTable;
答案 1 :(得分:0)
请注意检查表和删除表的名称。#MyTempTable
与#lu_sensor_name_19
这对我有用:
IF OBJECT_ID('tempdb..#MyTempTable') IS NOT NULL DROP TABLE #MyTempTable;
如果这不适用于您,我认为您的问题与临时表的范围和/或可见性有关。
临时表仅在创建它们的会话中存在, 我猜您正在删除一个不存在Amymore的临时表,或另一个会话中的临时表。
首先,当您要删除表时,必须检查进行SELECT INTO
的会话是否仍处于活动状态。
如果答案是肯定的,则检查您是从同一会话还是从另一会话退出。
在第二种情况下,您可以使用##MyTempTable
代替#MyTempTable
来解决问题
否则,它意味着某些东西或其他人已经将其丢弃