享受生活,享受学习

导航

临时表问题

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

posted on 2007-04-17 11:14  徘徊中的海鸟  阅读(203)  评论(0编辑  收藏  举报