到目前为止,这是我的整个代码
select Region
into #C
from ResearchDB.dbo.tC
where Tier=0
但我已经收到错误:
There is already an object named '#C' in the database.
现在,如果我将该行评论为“#C”,那么它的效果非常好。怎么回事?
答案 0 :(得分:0)
我使用两个选项:1(快速但临时) - 只需点击SSMS中的更改连接按钮,然后重新连接而不更改任何细节。这将重新建立连接,在此过程中删除临时表。不要忘记重新选择数据库,因为它将默认为Master或任何默认数据库设置为。
2.我有一个SP,只删除当前会话的所有临时表,并添加此行
EXEC dbf_DropTempTables
在我使用的每段代码的顶部创建临时表,我需要在故障排除时多次重新运行。以下是SP的参考:
`CREATE PROCEDURE dbf_DropTempTables
AS
-- drop all #temp tables for current session
begin
DECLARE @sql VARCHAR(60),
@name VARCHAR(60)
DECLARE dtt CURSOR
FOR SELECT SUBSTRING(t.name, 1, CHARINDEX('___', t.name) - 1)
FROM tempdb.sys.tables AS t
WHERE t.name LIKE '#%[_][_][_]%'
AND t.[object_id] = OBJECT_ID('tempdb..' + SUBSTRING(t.name, 1, CHARINDEX('___', t.name) - 1))
open dtt
fetch next from dtt into @name
while @@fetch_status <> -1
BEGIN
SELECT @sql = 'DROP TABLE ' + @name
EXEC ( @sql )
fetch next from dtt into @name
END
CLOSE dtt
deallocate dtt
END`