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 = 0while @@FETCH_STATUS = 0begin select @EmpCode, @EmpName, @EmpAddress fetch curEmployee into @EmpCode, @EmpName, @EmpAddressend -- 关闭游标close curEmployee -- 删除游标deallocate curEmployee