显式游标处理需要经过4个步骤:声明、打开、提取和关闭。显式游标在PL/SQL块的声明部分声明,在执行部分或异常处理部分打开、提取数据和关闭。如果提到的游标无特别说明则通常是指显式游标。
(1)声明游标
游标的声明在PL/SQL块的声明部分进行,就是定义一个游标名以及一条查询语句,其语法如下。
参数说明:
①cursor_name:声明的游标名。
②parameter_name[IN]:游标输入参数,IN说明参数的模式,可以省略。
③data_type:输入参数的类型,只需指定类型,不能指定精度或长度。
④value:为游标参数提供默认值。
⑤select_statement:为游标提供数据的查询语句。
⑥FOR UPDATE:用于使用游标中的数据时,锁定游标结果集与表中对应数据行的所有或部分列,当利用游标更新或删除表中数据时,必须使用该子句;OF表示只锁定指定的列,如果不使用OF,则表示锁定游标结果集与表中对应数据行的所有列。
⑦NOWAIT:默认情况下,如果数据对象已被某个用户锁定了,那么其他用户的FOR UPDATE操作就要等待,直到该用户释放这些数据行的锁定为止;如果使用了NOWAIT子句,则不等待,此时其他用户打开游标时会立即返回Oracle错误。
(2)打开游标
声明游标后,要通过游标检索数据库中的数据,还必须在PL/SQL块的执行部分打开游标,填充游标的结果集合。
用OPEN语句打开游标,其语法格式如下。(www.daowen.com)
参数说明:
①cursor_name:需要打开的游标名。
②value:为输入参数提供的值列表,这一列表中值的数量、数据类型和顺序必须与游标声明时指定的参数列表中参数的数量、类型和顺序一致。
(3)提取数据
打开游标后,可以通过提取数据来获取查询结果集中的单行记录,以便在PL/SQL程序块中进行处理。
使用FETCH…INTO语句实现,其语法格式如下。
其中,variable是用于存储结果集中单行记录数据的变量。INTO子句中的变量个数、顺序、数据类型必须与游标声明中SELECT语句查询列表内字段的数量、顺序和数据类型一致。
(4)关闭游标
在处理完游标结果集合中的数据后,要及时关闭游标,以便释放其所占用的系统资源。CLOSE语句关闭游标,其语法格式如下。
下面的代码演示了一个不带参数的游标的完整操作步骤。
需要注意的是,游标一旦打开,就不能再次打开,除非先关闭后再打开;只有在打开游标时,声明游标中的SELECT语句才会被执行;第一次使用FETCH语句时,游标指针指向第一条记录,操作完后,游标指针自动指向下一条记录;游标指针只能向前移动,不能回退。
下面的代码演示了一个带参数的游标的完整操作步骤。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。