=波波日志 > SQL及数据库 > SQL Server游标介绍=
[转]SQL Server游标介绍
SQL Server游标介绍
建立游标
打开游标
读取游标
关闭游标
删除游标
例:对student使用游标进行操作
fetch into 将从游标取得的值存入字符型变量
例:
创建scroll(滚动)游标,使其通过Last、Prior、Relative和Absolute选项支持全部滚动功能
全局游标的使用
例:使用全局游标global 的例子,先建立一个存储过程opencursor1用于建立和打开游标,再建立一个存储过程readcursor1用于读取数据,因为该游标作用域在当前连接中是全局的。所以它可以分成两个存储过程来执行,一个建立游标并打开游标,一个读出游标内的数据。
局部游标的示例
来源:http://2sws.blog.163.com/blog/static/1791024920098434542586/
建立游标
+展开
-SQL
declare cursor1 cursor
for select * from student
for select * from student
打开游标
+展开
-SQL
open cursor1
读取游标
+展开
-SQL
fetch next from cursor1
关闭游标
+展开
-SQL
close cursor1
删除游标
+展开
-SQL
deallocate cursor1
例:对student使用游标进行操作
+展开
-SQL
declare cursor1 cursor /*定义游标*/
for select * from student /*游标操作的表*/
open cursor1 /*打开游标*/
fetch next from cursor1 /*读出一条游标*/
while @@fetch_status=0 /*使用函数@@fetch_status函数报告上一个fetch语句的状态*/
begin
fetch next from cursor1 /*读取一条游标*/
end
close cursor1 /*关闭游标*/
deallocate cursor1 /*删除游标*/
for select * from student /*游标操作的表*/
open cursor1 /*打开游标*/
fetch next from cursor1 /*读出一条游标*/
while @@fetch_status=0 /*使用函数@@fetch_status函数报告上一个fetch语句的状态*/
begin
fetch next from cursor1 /*读取一条游标*/
end
close cursor1 /*关闭游标*/
deallocate cursor1 /*删除游标*/
fetch into 将从游标取得的值存入字符型变量
+展开
-SQL
fetch next from cursor1 into @name
例:
+展开
-SQL
declare @name char(50)
declare cursor1 cursor /*定义游标*/
for select 姓名 from student /*游标操作的表*/
open cursor1 /*打开游标*/
fetch next from cursor1 into @name /*读出一条游标*/
while @@fetch_status=0 /*使用函数@@fetch_status函数报告上一个fetch语句的状态*/
begin
print'名字:'+@name
fetch next from cursor1 into @name /*读取一条游标*/
end
close cursor1 /*关闭游标*/
deallocate cursor1 /*删除游标*/
declare cursor1 cursor /*定义游标*/
for select 姓名 from student /*游标操作的表*/
open cursor1 /*打开游标*/
fetch next from cursor1 into @name /*读出一条游标*/
while @@fetch_status=0 /*使用函数@@fetch_status函数报告上一个fetch语句的状态*/
begin
print'名字:'+@name
fetch next from cursor1 into @name /*读取一条游标*/
end
close cursor1 /*关闭游标*/
deallocate cursor1 /*删除游标*/
创建scroll(滚动)游标,使其通过Last、Prior、Relative和Absolute选项支持全部滚动功能
+展开
-SQL
declare cursor1 scroll cursor for /*定义scroll(滚动)游标*/
select * from student
open cursor1 /*打开游标*/
fetch last from cursor1 /*游标移动到游标头开始的最后一行并得到记录*/
fetch prior from cursor1 /*游标移动到当前行的上一条记录并得到记录*/
fetch absolute 2 from cursor1 /*游标移动到游标头开始的第2行并得到记录*/
fetch relative 3 from cursor1 /*游标移动到当前行向下(后)数的第3行并得到记录*/
fetch relative -2 from cursor1 /*游标移动到当前行向上(前)数的第2行并得到记录*/
close cursor1 /*关闭游标*/
deallocate cursor1 /*删除游标*/
select * from student
open cursor1 /*打开游标*/
fetch last from cursor1 /*游标移动到游标头开始的最后一行并得到记录*/
fetch prior from cursor1 /*游标移动到当前行的上一条记录并得到记录*/
fetch absolute 2 from cursor1 /*游标移动到游标头开始的第2行并得到记录*/
fetch relative 3 from cursor1 /*游标移动到当前行向下(后)数的第3行并得到记录*/
fetch relative -2 from cursor1 /*游标移动到当前行向上(前)数的第2行并得到记录*/
close cursor1 /*关闭游标*/
deallocate cursor1 /*删除游标*/
全局游标的使用
例:使用全局游标global 的例子,先建立一个存储过程opencursor1用于建立和打开游标,再建立一个存储过程readcursor1用于读取数据,因为该游标作用域在当前连接中是全局的。所以它可以分成两个存储过程来执行,一个建立游标并打开游标,一个读出游标内的数据。
+展开
-SQL
use wangjun
go
create procedure opencursor1 as
declare cursor1 cursor global for
select * from student
open cursor1;
go
create procedure readcursor1 as
fetch next from cursor1
while(@@fetch_status<>-1)
begin
fetch next from cursor1
end
go
exec opencursor1;
go
exec readcursor1;
close cursor1
go
deallocate cursor1
go
create procedure opencursor1 as
declare cursor1 cursor global for
select * from student
open cursor1;
go
create procedure readcursor1 as
fetch next from cursor1
while(@@fetch_status<>-1)
begin
fetch next from cursor1
end
go
exec opencursor1;
go
exec readcursor1;
close cursor1
go
deallocate cursor1
局部游标的示例
+展开
-SQL
create procedure cursor_local --建立存储过程cursor_local
@outcursor cursor varying output --局部游标做为输出变量
as
set @outcursor = cursor for --建立局部游标
select * from student
open @outcursor --打开局部游标
go
declare @cursorvar cursor --建立游标类型的变量
execute cursor_local @outcursor=@cursorvar output; --游标类型变量得到了存储过程输出的游标
fetch next from @cursorvar --开始从游标内读取数据
while @@fetch_status =0
begin
fetch next from @cursorvar
end
close @cursorvar --关闭游标
deallocate @cursorvar --删除游标
@outcursor cursor varying output --局部游标做为输出变量
as
set @outcursor = cursor for --建立局部游标
select * from student
open @outcursor --打开局部游标
go
declare @cursorvar cursor --建立游标类型的变量
execute cursor_local @outcursor=@cursorvar output; --游标类型变量得到了存储过程输出的游标
fetch next from @cursorvar --开始从游标内读取数据
while @@fetch_status =0
begin
fetch next from @cursorvar
end
close @cursorvar --关闭游标
deallocate @cursorvar --删除游标
来源:http://2sws.blog.163.com/blog/static/1791024920098434542586/
类别:SQL及数据库 作者:转载 日期:2010-12-09 【评论:0】
相关文章
暂时没有评论!
发表留言
热门博文
- access数据库导入mssqlserver保留自动增长列
- mssqlserver数据库导入access保留自动增长列
- 无法连接到WMI提供程序。你没有权限或者该服务器无法访问
- 链接Access出现“找不到可安装的 ISAM”错误的问题
- asp连接mssql“出现未找到提供程序。该程序可能未正确安装”错误
- Windows7如何安装SQL Server 2000
最新博文
- Sql Server参数化优化查询
- sqldataadapter update更新dataset无法同时更新多个表
- SqlServer2000无法打开用户默认数据库。登录失败
- sqlserver2005如何转移到sqlserver2000
- 'sa'用户登录失败。原因:未与信任 SQL Server 连接相关联
- SQL Server 2005 无法连接
随机博文
- windows xp sp3 安装Sql 2005失败处理
- 删除MSSQLServer危险存储过程
- Access使用参数化UPDATE数据时,数据无法更新的问题
- ASP.NET连接非默认MSSQL数据库实例
- 使用微软分布式缓存服务Velocity Part 2
- Windows7如何安装SQL Server 2000
广告商赞助

