我们有一组在 SP 中创建并填充的全局临时表。这就是从应用程序调用的主要 sp。
现在说我是第一个调用主 SP 的用户,全局临时表被创建并且一切正常。但有时(可能是当多个用户访问主 SP 时)表被删除并收到一条错误消息,指出对象名称无效
其他任何人都面临着与全球临时表被删除相同的问题?
提前致谢 !!
我们有一组在 SP 中创建并填充的全局临时表。这就是从应用程序调用的主要 sp。
现在说我是第一个调用主 SP 的用户,全局临时表被创建并且一切正常。但有时(可能是当多个用户访问主 SP 时)表被删除并收到一条错误消息,指出对象名称无效
其他任何人都面临着与全球临时表被删除相同的问题?
提前致谢 !!
您可以在创建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)