第三章 关系数据库标准语言SQL

第一节 第二节 第三节 第四节

第四节 视 图    (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)
3.7.4 使用游标的SQL语句
    必须使用游标的SQL语句, 查询结果为多条记录的SELECT语句, CURRENT形式的UPDATE语句, CURRENT
形式的DELETE语句。
一、 查询结果为多条记录的SELECT语句
    使用游标的步骤:1. 说明游标;2. 打开游标;3. 移动游标指针,然后取当前记录;4. 关闭游标;
    1. 说明游标,使用DECLARE语句。语句格式:
        EXEC SQL DECLARE <游标名> CURSOR FOR <SELECT语句>;
    功能:一条说明性语句,DBMS并不执行SELECT指定的查询操作。
    2. 打开游标,使用OPEN语句。 语句格式: EXEC SQL OPEN <游标名>;
    功能:打开游标实际上是执行相应的SELECT语句,把所有满足查询条件的记录从指定表取到缓冲区中。
这时游标处于活动状态,指针指向查询结果集中第一条记录之前。
    3. 移动游标指针,然后取当前记录,使用FETCH语句。语句格式:
        EXEC SQL FETCH [[NEXT|PRIOR|FIRST|LAST] FROM] <游标名>
        INTO <主变量>[<指示变量>] [,<主变量>[<指示变量>]]...;
    功能:指定方向推动游标指针,然后将缓冲区中的当前记录取出来送至主变量供主语言进一步处理。
    NEXT|PRIOR|FIRST|LAST:指定推动游标指针的方式。NEXT:向前推进一条记录;PRIOR:向回退一条记
录;FIRST:推向第一条记录;LAST:推向最后一条记录;缺省值为NEXT。
    说明:
    (1) 主变量必须与SELECT语句中的目标列表达式具有一一对应关系;
    (2) FETCH语句通常用在一个循环结构中,通过循环执行FETCH语句逐条取出结果集中的行进行处理;
    (3) 为进一步方便用户处理数据,现在一些关系数据库管理系统对FETCH语句做了扩充,允许用户向任
意方向以任意步长移动游标指针。
    4. 关闭游标,使用CLOSE语句。语句格式:
        EXEC SQL CLOSE <游标名>;
    功能:关闭游标,释放结果集占用的缓冲区及其他资源。
    说明:游标被关闭后,就不再和原来的查询结果集相联系,被关闭的游标可以再次被打开,与新的查询
结果相联系。
二、CURRENT形式的UPDATE语句和DELETE语句
    CURRENT形式的UPDATE语句和DELETE语句的用途,非CURRENT形式的UPDATE语句和DELETE语句,面向集合
的操作。一次修改或删除所有满足条件的记录,如果只想修改或删除其中某个记录。用带游标的SELECT语句
查出所有满足条件的记录,从中进一步找出要修改或删除的记录。用CURRENT形式的UPDATE语句和DELETE语
句修改或删除之。步骤:
    (1) DECLARE, 说明游标;
    (2) OPEN, 打开游标,把所有满足查询条件的记录从指定表取至缓冲区;
    (3) FETCH, 推进游标指针,把当前记录从缓冲区中取出来送至主变量;
    (4) 检查该记录是否是要修改或删除的记录,是则处理之;
    (5) 重复第(3)和(4)步,用逐条取出结果集中的行进行判断和处理;
    (6) CLOSE,关闭游标,释放结果集占用的缓冲区和其他资源。

吉林大学网络教育学院 版权所有