请参阅以下代码:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE Test
AS
BEGIN
begin
select * into #dbreviews from dbreviews
end
drop table #dbreviews
begin
select * into #dbreviews from dbreviews
end
END
GO
我得到的错误是:
数据库中已有一个名为
'#dbreviews'
的对象。
这样的问题:There is already an object named '#columntable' in the database告诉我这应该是可能的。
答案 0 :(得分:4)
根据SQL Server规范,不允许使用它。请参阅documentation。
如果在单个存储中创建了多个临时表 程序或批次,它们必须有不同的名称。
您正在创建两个名称为#dbreviews
的临时表。这是不允许的。
答案 1 :(得分:1)
在您的PROC结束时,#dbreviews
存在。再次运行时,它已经存在。如果要在每次运行proc时重新创建,请使用:
IF OBJECT_ID('tempdb..#dbreviews') IS NOT NULL
THEN
drop table #dbreviews
END IF
select * into #dbreviews from dbreviews
答案 2 :(得分:0)
请确保您使用“更改”语法:
ALTER PROCEDURE
如果粘贴代码,则可能需要将“ create”替换为“ alter” ...这只是发生在我身上,令人沮丧,所以我希望这对其他人有所帮助。
注意:这是我对一个稍有不同的问题的回答,因此我回收了。