SQL游标
1. 游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。
2. 游标实际上是一种从包括多条数据记录的结果集中每次提取一条记录的机制。
3. 游标的缺点:在性能上,游标会吃更多的内存,占用更多资源。
游标的优点:
(1). 允许应用程序对查询语句返回的行结果集中每一行进行相同或不同操作,提供灵活性的操作。
(2). 提供基于游标位置对表中数据进行删除、插入或更新的能力。
实例:
--定义变量(用于赋值从游标中获取的每条记录的字段值)
declare @clubId INT,@ClubCode VARCHAR(50)
--1.定义游标
declare myCursor Cursor for (select clubId,ClubCode from t_club)
--2.打开游标
open myCursor;
--3.使用游标
fetch next from myCursor into @clubId --移动游标指向到第一条数据,提取第一条数据存放在变量中
while @@FETCH_STATUS=0 --判断是否提取记录是否成功并继续循环
BEGIN
--使用提取的变量
if(select COUNT(*) from T_ClubParam where ClubID=@clubId and Code='StartTeeTime')=0
begin
insert into T_ClubParam values(@clubId,'StartTeeTime','08:00',0,'中央预定第一组TeeTime起始时间')
END
if(select COUNT(*) from T_ClubParam where ClubID=@clubId and Code='EndTeeTime')=0
begin
insert into T_ClubParam values(@clubId,'EndTeeTime','17:00',0,'中央预定最后一组TeeTime结束时间')
END
fetch next from myCursor into @clubId --继续提取下一行
END
--4.关闭游标
close myCursor;
--5.释放游标
deallocate myCursor;
GO

浙公网安备 33010602011771号