SQL中游标的语法及应用

数据库 SQL Server
游标既对可用来旋转储存在系统永久表中的数据行的副本,也可以指向储存在系统永久表中的数据行的指针。 下面就将为您详解游标的使用,以及语法,供您参考学习。

游标是SQL数据库中不可或缺的部分,可以旋转储存在系统永久表中的数据行的副本,下面就将为您详解游标的使用,以及语法,供您参考学习。

MS-SQL的游标是一种临时的数据库对象,既对可用来旋转储存在系统永久表中的数据行的副本,也可以指向储存在系统永久表中的数据行的指针。
 

游标为您提供了在逐行的基础上而不是一次处理整个结果集为基础的操作表中数据的方法。
 

1.如何使用游标
1)    定义游标语句 Declare <游标名> Cursor For
2)    创建游标语句 Open <游标名>
3)    提取游标列值、移动记录指针 Fetch <列名列表> From <游标名> [Into <变量列表>]
4)    使用@@Fetch_Status利用While循环处理游标中的行
5)    删除游标并释放语句 Close <游标名>/Deallocate <游标名>
6)    游标应用实例
--定义游标
Declare cur_Depart Cursor
For Select cDeptID,cDeptName From Department into @DeptID,@DeptName
--创建游标
Open cur_Depart
--移动或提取列值
Fetch From cur_Depart into @DeptID,@DeptName
--利用循环处理游标中的列值
While @@Fetch_Status=0
Begin
    Print @DeptID,@DeptName
    Fetch From cur_Depart into @DeptID,@DeptName
End
--关闭/释放游标
Close cur_Depart
Deallocate cur_Depart
简单的过程:
定义游标
DECLARE CustomerCursor CURSOR FOR
SELECT acct_no,name,balance
FROM customer
WHERE province="北京";
打开游标
OPEN CustomerCursor;
提取数据--设置循环
lb_continue=True #p#
ll_total=0
DO WHILE lb_continue
FETCH CustomerCursor
INTO:ls_acct_no, :ls_name, :ll_balance;
If sqlca.sqlcode=0 Then
ll_total+=ll_balance
Else
lb_continue=False
End If
LOOP
关闭游标
CLOSE CustomerCursor;
 

2.语句的详细及注意

1) 定义游标语句
Declare <游标名> [Insensitive] [Scroll] Cursor                    
    For