sqlserver数据库中cursor游标如何使用?
1、创建一张测试表,用于演示sqlserver游标的使用
create table tblCursor(
Id uniqueidentifier,
EmpCode varchar(50),
EmpName varchar(50),
EmpAddress varchar(200)
);
2、往测试表中插入几行测试数据
insert into tblCursor(Id, EmpCode, EmpName, EmpAddress) values(NEWID(), 'Emp001', '张三', '北京');
insert into tblCursor(Id, EmpCode, EmpName, EmpAddress) values(NEWID(), 'Emp002', '李四', '上海');
insert into tblCursor(Id, EmpCode, EmpName, EmpAddress) values(NEWID(), 'Emp003', '王五', '深圳');
insert into tblCursor(Id, EmpCode, EmpName, EmpAddress) values(NEWID(), 'Emp004', '赵六', '广州');
3、查询测试表中的数据
select * from tblCursor;
4、定义游标,格式如下,截图中有颜色的字都是sqlserver的关键字
declare curEmployee cursor for
select empcode, empname, empaddress from tblCursor
5、定义游标之后,需要打开游标,才能开始操作,打开游标使用下面的语法
-- curEmployee 就是上一步定义的游标名称
open curEmployee
6、当 全局变量@@FETCH_STATUS = -1,表示当前没有游标在处理数据
select @@FETCH_STATUS
7、使用游标,循环输出第一步创建表的数据完整代码如下:
-- 定义临时标量,用于接收游标的数据内容
declare @EmpCode varchar(50), @EmpName varchar(50), @EmpAddress varchar(200);
-- 定义游标
declare curEmployee cursor for
select empcode, empname, empaddress from tblCursor
-- 打开游标
open curEmployee
-- 请注意:游标返回的字段个数、类型都需要与into后面的变量一致
fetch curEmployee into @EmpCode, @EmpName, @EmpAddress
-- 当游标循环结束之后 @@FETCH_STATUS = -1,当还有下一行数据的时候,@@FETCH_STATUS = 0
while @@FETCH_STATUS = 0
begin
select @EmpCode, @EmpName, @EmpAddress
fetch curEmployee into @EmpCode, @EmpName, @EmpAddress
end
-- 关闭游标
close curEmployee
-- 删除游标
deallocate curEmployee