我有一个存储过程让我们称之为ABC,它生成一个临时表## ref1。仅当工作日等于星期一时,此过程才会执行。
我有另一个存储过程让我们称之为XYZ,它生成一个输出表,它是来自ABC的## ref1的并集,同样很少有其他存储过程。
我收到错误,说## ref1是XYZ存储过程中的无效对象,因为## ref1仅在星期一创建。
如何在存储过程XYZ中纠正此错误?任何帮助,将不胜感激。
谢谢。
答案 0 :(得分:0)
为什么不使用物理表,而不是使用全局临时表。
在您的情况下,必须删除全局临时表。
任何用户及创建后的任何连接都可以看到全局临时表,当引用该表的所有用户与SQL Server实例断开连接时将被删除。
如果您创建全局临时表## employee,那么该用户中的任何用户 数据库可以使用此表。如果没有其他用户使用此功能 在创建表后,在断开连接时删除表。 如果其他用户在创建表后使用该表,则为SQL Server 断开连接后和所有其他会话都没有后删除它 更积极地使用它。
答案 1 :(得分:0)
如果你真的需要使用全局临时表,那么这样的事情应该有效:
create stored procedure xyz as
begin
create table #result (id int)
if object_id('tempdb..##ref1 ') is not null
insert into #result
select * from ##ref1
-- do you stuff here
drop table #result
end