临时表问题
1、在存储过程中,建立的临时表,应该在退出存储过程时被自动删除,不用手动删除。显式删除根据需要判断。
2、可以创建本地和全局临时表。本地临时表仅在当前会话中可见;全局临时表在所有会话中都可见,临时表都是保存在tempdb 的sysobjects 表中,临时表有两种:本地临时表(#table)和全局临时表(##table)。在嵌套存储过程里是可以使用同名的临时表的,
如:
CREATE PROCEDURE Test2
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (2)
SELECT Test2Col = x FROM #t
GO
CREATE PROCEDURE Test1
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (1)
SELECT Test1Col = x FROM #t
EXEC Test2
GO
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (99)
GO
EXEC Test1
GO
3、表和临时表是否存在判断
A、表
if exists (select 1 from sysobjects where id=object_id('TableName'))
drop table table_name
go
B、临时表
if exists( select 1 from tempdb.dbo.sysobjects where name='##temp_log')
drop table ##temp_log