SQL Server——从入门到放弃(14)-- SQL练习9 ( CURSOR)

本文深入解析SQL游标的工作原理及其在嵌入式SQL中的应用。游标作为桥梁,解决了主语言面向记录与SQL面向集合之间的数据处理冲突。文章通过具体示例,展示了游标在多记录查询中的使用步骤,包括声明、打开、读取和关闭游标的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我又来了😁

这次的实验很简单,只有一个,就是对CURSOR 也就是游标 的使用
代码:

IF (exists (select * from sys.objects where name = 'proc_cursor'))
    DROP PROCEDURE proc_cursor
GO
CREATE PROCEDURE proc_cursor -- 存储过程
AS
DECLARE @Sno char(9)--定义变量
DECLARE @Sname char(20)--定义变量
 
DECLARE mycursor CURSOR FOR select Sno,Sname from 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
GO

执行截图
在这里插入图片描述

Student表中数据
在这里插入图片描述
游标读出的结果与Student表中数据一致。

那么问题就来了,游标,啥是游标,所以接下来我就对游标做一个简单的介绍。

  1. 游标多应用于嵌入式SQL语句中,而所谓嵌入式SQL就是将SQL语句嵌入如C,C++,Java等程序设计语言中。这些语言就称为主语言
  2. 由于SQL是面向集合的,一条语句可以产生或处理多条语句,而主语言是面向记录的,一组主变量一次只能存放一条记录。不能满足要求,所以就有了游标。
  3. 游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字,用户可以通过游标逐一获取记录并赋给主变量,交由主语句进一步处理
  4. 使用游标之前应该需要说明游标
    此时定义的游标只是一条说明性语句,这是关系数据库管理系统并不执行SELECT语句
  5. 打开游标进行操作,操作完成以后需要关闭游标
  6. 有些嵌入式SQL语句是不需要使用游标的,比如说:说明性语句、数据定义语句、数据控制语句、查询结果为单记录的SELECT语句、非CURRENT形式的增删改语句
  7. 而有些SQL语句是必须要使用游标的,比如说:查询结果为多条记录的SELECT语句、CURRENT形式的UPDATE 语句和DELETE语句

以查询结果为多条记录的SELECT语句为例,简要说明游标的使用步骤。
1)说明游标

DECLARE <游标名> CURSOR FOR <SELECT语句> 

2) 打开游标

OPEN <游标名> 

3)推进游标指针并取当前记录

FETCH<游标名>
      INTO<主变量>[<指示变量>][<主变量>[<指示变量>]]··

4)关闭游标

CLOSE <游标名> 

5)(可选)删除游标

DEALLOCATE <游标名>

一定要先关闭,再删除。

好了,结束,对,没了🤪

再见吧~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值