您的位置:首页 > 数据库

sql临时表,表变量,CTE,游标使用方法

2014-01-02 15:34 381 查看
if OBJECT_ID('groups') is not null
drop table groups

create table groups
(
groupid varchar(10),
val int null
)
insert into groups values('a','1');
insert into groups values('a','2');
insert into groups values('a','3');
insert into groups values('b','3');
insert into groups values('b','4');
insert into groups values('b','2');

--临时表
if OBJECT_ID('#tmp') is not null
drop table #tmp
go
create table #tmp
(
groupid varchar(10),
val int null
)
insert into #tmp select * from groups where groupid='b'
select * from #tmp

drop table #tmp
go
--临时表2
select * into #tmp from groups where groupid ='b'
select * from #tmp
drop table #tmp
go

--表变量
declare @t table(id varchar(10),val int)
insert into @t select * from groups where groupid='b'
select * from @t;

--CTE
with tb(id,value) as --alias column name
(
select * from groups where groupid='b'
)
select * from tb

--游标
if OBJECT_ID('#tmp') is not null
drop table #tmp
go
create table #tmp
(
groupid varchar(10),
val int null
)
declare @id varchar(10), @val  int
declare c cursor fast_forward for select * from groups where groupid='b'
open c
fetch next from c into @id,@val
while @@FETCH_STATUS =0
begin
insert into #tmp values(@id,@val)
fetch next from c into @id,@val
end
close c
deallocate c
select * from #tmp


※注意事项

1,CTE后面紧跟delete语句时,cte的查询语句中只能是单表,否者删除不成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: