游标的类型: 1、静态游标(不检测数据行的变化) 2、动态游标(反映所有数据行的改变) 3、仅向前游标(不支持滚动) 4、键集游标(能反映修改,但不能准确反映插入、删除) 游标使用顺序: 1、定义游标 2、打开游标 3、使用游标 4、关闭游标 5、释放游标 Transact-SQL: declare 游标名 cursor [LOCAL | GLOBAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS] for selet语句 [for update[of 列名[,列名]] 注:LOCAL 局部游标 GLOBAL 全局游标 FORWARD_ONLY 仅向前 SCROLL 滚动 STATIC 静态 KEYSET 键集 DYNAMIC 动态 READ_ONLY 只读 SCROLL_LOCKS 锁定游标当前行 获取游标的数据 FETCH [[NEXT | PRIOR | FIRST | LAST | ABSOLUTE{ n | @nvar | RELATIVE { n | @nvar}] From ] 游标名 [into 变量] 注: NEXT 下一行 PRIOR 上一行 FIRST 第一行 LAST 最后一行 ABSOLUTE n 第n行 RELATIVE n 当前位置开始的第n行 into 变量 把当前行的各字段值赋值给变量 游标状态变量: @@fetch_status 游标状态 0 成功 -1 失败 -2 丢失 @@cursor_rows 游标中结果集中的行数 n 行数 -1 游标是动态的 0 空集游标 操作游标的当前行: current of 游标名 利用游标修改、删除数据 use sql123 declare @carinfo nvarchar(10) declare @carid int declare car_cursor cursor for select salecarid from sales open car_cursor fetch next from car_cursor into @carid while (@@fetch_status=0) begin select @carinfo=carinfo from sales where salecarid=@carid if @carinfo like '大众%' begin update sales set carinfo='本田' where salecarid=2 end fetch next from car_cursor into @carid end close car_cursor deallocate car_cursor (责任编辑:admin) |