我们有一组在SP中创建并填充的全局临时表。这是从应用程序中调用的主要sp。
现在说我是第一个调用主SP的用户,全局临时表被创建,一切正常。但有时(可能是多个用户访问主SP时)表被删除并收到错误消息,指出无效的对象名称
其他人面临同样的问题,全球临时表被删除了吗?
先谢谢!!
答案 0 :(得分:0)
您可以在创建temp table
之前检查表格是否存在
而不是global temp table
,如果表仅在存储过程的范围内使用,则更喜欢local temp tables
或table variable
存储过程完成后,将自动删除在存储过程中创建的本地临时表。该表可以由创建该表的存储过程执行的任何嵌套存储过程引用。调用创建表
的存储过程的进程无法引用该表所有其他本地临时表在当前会话结束时自动删除
当创建表的会话结束且所有其他任务已停止引用它们时,将自动删除全局临时表。任务和表之间的关联仅在单个Transact-SQL语句的生命周期内维护。这意味着在创建会话结束时主动引用表的最后一个Transact-SQL语句完成时删除全局临时表
在创建本地临时表之前,
IF OBJECT_ID('tempdb..#local_temp_table') IS NOT NULL DROP TABLE #local_temp_table
CREATE TABLE #local_temp_table(id int)
或表变量
declare @table_var table(id int)