数据库作业17:SQL练习9 - CURSOR

  • 阅读以下代码,在SQLserver上执行。分析结果,并总结游标的使用。
IF (exists (select * from sys.objects where name = 'proc_cursor'))
    DROP PROCEDURE proc_cursor
GO
CREATE PROCEDURE proc_cursor --创建存储过程 名为proc_cursor
AS

DECLARE @Sno char(9)--定义变量	
DECLARE @Sname char(20)--定义变量 
DECLARE mycursor CURSOR FOR select Sno,Sname from Student --声明游标 名为mycursor用到Student表
 
OPEN mycursor  --打开游标
 
FETCH NEXT FROM mycursor INTO @Sno,@Sname
 
WHILE(@@FETCH_STATUS=0)  --遍历所有的数据
BEGIN
	PRINT '游标成功取出一条数据:'
	PRINT @Sno
	PRINT @Sname
	PRINT '********************'
	FETCH NEXT FROM mycursor INTO @Sno,@Sname  --取下一条游标数据
END
 
CLOSE mycursor --关闭游标
 
DEALLOCATE mycursor --删除游标
GO
 
EXEC proc_cursor	--EXEC执行
GO

在这里插入图片描述
这里的结果说明了我们取出了表中的学号和姓名的数据:
效果相当于:

select Sno , Sname from Student;

在这里插入图片描述

顺序不同,但是内容都包含。

T-SQL中使用游标

  • 游标概念
    1.为了协调SQL语句(一条可以处理多条记录)和主语言(一次只能放进一条记录)的不同的处理方式,引入游标,就相当于一个数据缓冲区。
    2.通过游标逐一获取一条记录,并赋给主变量,交由主语言进一步处理。

  • 游标的使用:

  1. 声明游标
declare <游标名> cursor for <查询语句>;
  1. 打开游标
open 游标名;
  1. 取出数据:
exec sql fetch<游标名>
	into <主变量>[<指示变量>][,<主变量>[<指示变量>]]...;
  1. 关闭游标
close <游标名>;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值