mssql sqlserver 存储过程-创建临时表的方法分享


摘要:
下文讲述在sqlsever脚本编写中,临时表缓存的另类方法,采用cte表达式,对数据进行临时缓存处理,如下所示:
实验环境:sqlserver 2008 R2


create table test(keyId int identity,info varchar(10))
go
insert into test(info)values('a'),('b'),('c'),('d'),('e'),
('f'),('g'),('h'),('i'),('j'),('k'),('l'),('m'),('n')
go

/*
采用 with 生成临时表
*/
with tmpTable ([流水号],[列名])  ---新生成临时表 tmpTable 列名([流水号],[列名])
as
(
 select keyId,info from test where keyId  in(5,6,7,8,9) 
 union all
 select 888,'测试'
) 

select  *  from tmpTable   ---使用临时表
go


truncate table test 
drop table test 


注意事项:
1.使用此方法建立临时表,在建立完毕后,需立即使用,否则会产生相应的错误信息;
临时表在使用后,如果中间插入了别的脚本后,则临时表会失效,
在未运行其它脚本前,可以多次操作临时表
2.采用with生成临时表前,前面的语句需使用 (分号) 分隔
3. 不能在as 后面使用以下子句(
3.1 没用使用top的order by
3.2 into
3.3 for xml
4.可以同时生成多个临时表(使用逗号分隔就可以),如下所示
with tmptable1(列名)
as (),
tmptable2(列名)
as (),
tmptable3(列名)
as ()
5.不能对临时表中进行 insert update delete 操作