文档介绍:踏雪无痕
SQL SERVER临时表的使用
分类: 数据库 2011-08-25 13:49 128人阅读评论(0) 收藏举报
 
drop table #Tmp   --删除临时表#Tmp
create table #Tmp  --创建临时表#Tmp
(
    ID   int IDENTITY (1,1)     not null, --创建列ID,并且每次新增一条记录就会加1
    WokNo                varchar(50),  
    primary key (ID)      --定义ID为临时表#Tmp的主键     
);
Select * from #Tmp    --查询临时表的数据
truncate table #Tmp  --清空临时表的所有数据和约束
相关例子:
Declare ***@Wokno Varchar(500)  --用来记录职工号
Declare ***@Str NVarchar(4000)  --用来存放查询语句
Declare ***@Count int  --求出总记录数     
Declare ***@i int
Set ***@i = 0
Select ***@Count = Count(Distinct(Wokno)) from #Tmp
While ***@i < ***@Count
    Begin
       Set ***@Str = 'Select top 1 ***@Wokno = WokNo from #Tmp Where id not in (Select top ' + Str(***@i) +
'id from #Tmp)'
       Exec Sp_ExecuteSql ***@Str,N'***@WokNo Varchar(500) OutPut',***@WokNo Output
       Select ***@WokNo,***@i  --一行一行把职工号显示出来
       Set ***@i = ***@i + 1
    End
临时表
可以创建本地和全局临时表。本地临时表仅在当前会话中可见;全局临时表在所有会话中都可见。
本地临时表的名称前面有一个编号符(#table_name),而全局临时表的名称前面有两个编号符(##table_name)。
SQL 语句使用 CREATE TABLE 语句中为 table_name 指定的名称引用临时表:
CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES (1)
如果本地临时表由存储过程创建或由多个用户同时执行的应用程序创建,则 SQL Server 必须能够区分由不同用户
创建的表。为此,SQL Server 在内部为每个本地临时表的表名追加一个数字后缀。存储在 tempdb 数据库的
sysobjects 表中的临时表,其全名由 CREATE TABLE 语句中指定的表名和系统生成的数字后缀组成。为了允许追加
后缀,为本地临时表指定的表名 table_name 不能超过 116 个字符。
除非使用 DROP TABLE 语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去: