日期:2014-05-19  浏览次数:20840 次

关于临时表的使用问题
在存储过程中使用临时表,但我这临时表名是作为存储过程的参数传入的,在存储过程中操作使用完后,存储过程会不会自动结束我这临时表的寿命啊

------解决方案--------------------
存贮过程结果后,临时表的生命期自行结束,这是一定的,
不过手工删除临时表更是一种好的习惯.
------解决方案--------------------
临时表分全局(#)和局部(##),如果是前者,那除非手动删除和重新启动Sql服务才会消失,如果是后者,那么处理完存储过程会自动删除。
------解决方案--------------------
除非使用 DROP TABLE 语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去:

当存储过程完成时,将自动除去在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。
------解决方案--------------------
除非使用 DROP TABLE 语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去:

1、当存储过程完成时,将自动除去在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。

2、所有其它本地临时表在当前会话结束时自动除去。

3、全局临时表在创建此表的会话结束且其它任务停止对其引用时自动除去。任务与表之间的关联只在单个 Transact-SQL 语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的 Transact-SQL 语句完成后,将自动除去此表。
------解决方案--------------------
另外,在存儲過程內部定義的本地臨時表,只在存儲過程內部有效。
------解决方案--------------------
有这么复杂吗?

一句话,连接中一直生效,断开连接失效,在proc内创建只在proc内生效,离开即失效
------解决方案--------------------
在存储过程内部创建的临时表只在当前存储过程内部有效,存储过程执行完毕后系统自动销毁。