SQL Server CURSOR游标使用方法

时间:2020-04-11
本文章向大家介绍SQL Server CURSOR游标使用方法,主要包括SQL Server CURSOR游标使用方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

基本结构

DECLARE Employee_Cursor CURSOR FOR
   SELECT EmpID, JobID FROM Employee
OPEN Employee_Cursor
FETCH NEXT FROM Employee_Cursor
WHILE @@FETCH_STATUS = 0  
   BEGIN
      --DO SOMETHING WITH CURSOR
      FETCH NEXT FROM Employee_Cursor
   END
CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor

关键步骤

  1. 声明游标:DECLARE [游标名称] CURSOR FOR [SELECT语句],FOR后面的查询结果就是游标的内容,后续将对其逐行提取;
  2. 打开游标:OPEN [游标名称],名称与上文保持统一;
  3. 提取一行:FETCH NEXT FROM [游标名称],提取第一步的查询结果,每执行一次FETCH NEXT依次提取一行;
  4. 判断状态:执行一次FETCH NEXT之后,通过系统变量@@FETCH_STATUS指示操作结果:提取成功返回0,失败返回-1(如已到达最后一行);
  5. 关闭游标:CLOSE [游标名称]
  6. 释放游标:DEALLOCATE [游标名称]

@@FETCH_STATUS状态值

返回值说明
 0 FETCH 语句成功。
-1 FETCH 语句失败或行不在结果集中。
-2 提取的行不存在。
-9 游标未执行提取操作。

-

注意事项

  • WHILE循环开始前,执行一次FETCH NEX;循环体结束前,也需要执行一次FETCH NEXT,否则@@FETCH_STATUS并没有更新。
  • 结束前,必须执行CLOSE和DEALLOCATE命令。
  • FETCH NEXT已到达最后一行,后续@@FETCH_STATUS会返回-1,但游标仍然是最后一行数据。

应用方法

DO SOMETHING WITH CURSOR

一般会将提取到的值赋给变量,用于执行相关任务。

原文地址:https://www.cnblogs.com/monsino/p/12679299.html