几种游标的用法(游标的几种使用方法)
使用游标变量赋值
use TestSchool
go
declare @varcursor Cursor --声明游标变量
declare cursor_Adress cursor for --创建游标
select Id,PCity ,Pcode from Adress;
open cursor_Adress; --打开游标
set @varcursor = cursor_Adress --为游标变量赋值
fetch next from @varcursor --从游标变量中读取值
while @@FETCH_STATUS = 0 --判断fetch 语句是否执行成功
begin
fetch ne
xt from @varcursor --读取游标变量中的数据end
close @varcursor --关闭游标
deallocate @varcursor --释放游标
结果:
用order by 子句改变游标中行的顺序
--用order by 子句改变游标中行的顺序
use TestSchool
go
declare Cursor_Order cursor for
select Id,PCity from Adress
order by Id desc
open Cursor_Order
fetch next from Cursor_Order
while @@FETCH_STATUS = 0
fetch next from Cursor_Order
close Cursor_Order
deallocate Cursor_Order;
结果:
使用游标
修改数据--使用游标修改数据 use TestSchool select * from newtable go declare @Cid int declare @Id int = 17 declare Cursor_Alter cursor for select Cid from newtable ; open Cursor_Alter fetch next from Cursor_Alter into @Cid while @@FETCH_STATUS = 0 begin if @Cid = @Id begin update newtable set CName = '025班' where Cid = @Id end fetch next from Cursor_Alter into @Cid end close Cursor_Alter deallocate Cursor_Alter select * from newtable where Cid = 17;
结果:
使用游标删除数据
--使用游标删除数据
use TestSchool
insert into newtable values (13 ,'022班 ')
sele
ct * from newtablego
declare @Cid int
declare @Id int = 13
declare Cursor_Delete cursor for
select Cid from newtable ;
open Cursor_Delete
fetch next from Cursor_Delete into @Cid
while @@FETCH_STATUS = 0
begin
if @Cid = @Id
begin
delete from newtable where Cid = @Id
end
fetch next from Cursor_Delete into @Cid
end
close Cursor_Delete
deallocate Cursor_Delete
select * from newtable
结果:
0条评论