SQLServer 游标 (A)
2014-04-10 13:23
134 查看
游标
游标分为客户端游标和服务器端游标。Sql通过游标可以对一个结果集进行逐行处理。对于使用服务器端游标的过程有:声明、打开、读取、关闭、释放。1 声明游标
1.1 SQL-92标准的声明
Declare cursor_name [insensitive][scroll] cursorFor select_statement
[for { readonly|update [of column_name[,…n]]}]
Insensitive:使用查询结果的副本
如:
declare xs_cur1 cursor
for
select* from xs
where stu_major='计算机'
for read only
1.2 T-SQL扩展的游标声明
Declare cursor_name Cursor[local | global] /*游标作用域*/
[forward_only | scroll] /*游标移动方向*/
[static| keyset | dynamic | fast_forward] /*游标类型*/
[read_only | scroll_locks | optimistic] /*访问属性*/
[tupe_warning] /*类型转换警告信息*/
For select_statement
[for update [of column_name[,…n]] /*可修改的列*/
Static:静态游标,只读
Keyset:键集驱动游标,可以通过键集驱动游标修改基本表中非关键字列的值。
dynamic :动态游标
fast_forward:只进游标
declare xs_cur2 cursor
dynamic
for
select* from xs
where stu_major='计算机'
2 打开游标
Open {{[global] cursor_name}| cursor_variable_name}例子:/*定义游标,然后打开,输出其行数*/
declare xs_cur3 cursor
local scroll scroll_locks
for
select stu_id,stu_name,stu_total_credit from xs
for update of stu_total_credit
open xs_cur3
select 'the number of rows'=@@cursor_rows
3 读取数据
游标打开后,就可以使用fetch语句从中读取数据。Fetch语句的格式为:Fetch
[next|prior|first|last|absolute{n|@nvar}|relative{n|@nvar}]
From {{[global] cursor_name}| cursor_variable_name}
Into @variable_name[,….n]
如:fetch first from xs_cur2
注意:fetch语句执行的状态保存在全局变量@@Fetch_status中,其值为0,表示执行成功;为-1,表示所要读取的行不在结果集中;为-2,表示被提取的行已经不在(已被删除)。
4 关闭游标
Close {{[global] cursor_name}| cursor_variable_name}5 释放游标
Deallocate {{[global] cursor_name}| cursor_variable_name}相关文章推荐
- Oracle中的数值处理方法
- Sphinx/coreseek/mysql全文检索
- 用客户端命令psql连接 PostgreSQL 不输入密码的方法
- Oracle 导出数据库(不积跬步,无以至千里)
- mysql中utf8_general_cs和utf8_general_ci和utf8_bin的一点区别
- 更改Mysql数据库中的数据出现乱码问题
- Oracle学习笔记 4 --单行函数
- sql分组合并字段重复项sql for xml path
- Oracle 索引
- 怎样修改SQL Server 2005/2008的系统存储过程(转)
- SQL2005学习(三十),创建表
- memcache+apache+tomcat(提供软件包)
- 修改MySQL最大连接数
- MYSQL的DATE_FORMAT()格式化日期
- Merge多表增、删、改操作
- oracle之查询某个表上的触发器
- 解决mysql中Access denied for user 'root'@'localhost' (using password: NO)的方法
- java调用oracle的存储过程
- mysql事物处理的知识点总结
- 数据库里保存会话