目录
PL/SQL 游标
游标提供了一种从表中检索数据并进行操作的灵活手段,游标主要用在服务器上,处理由客户端发送给服务器端的 SQL 语句,或是批处理、存储过程、触发器中的数据处理请求。游标的作用就相当于指针,通过游标 PL/SQL 程序可以一次处理查询结果集中的一行,并可以对该行数据执行特定操作,从而为用户在处理数据的过程中提供很大方便。
在 Oracle 中,通过游标操作数据主要使用显式游标和隐式游标。另外,还包括具有引用类型特性的 REF 游标。在这里仅介绍前两种经常使用的显式游标和隐式游标。
1、显式游标
显式游标是由用户声明和操作的一种游标,通常用于操作查询结果集(即由 select 语句返回的查询结果),使用它处理数据的步骤包括:声明游标、打开游标、读取游标和关闭游标4个步骤。其中读取游标可能是个反复操作的步骤,因为游标每次只能读取一行数据,所以对于多条记录,需要反复读取,直到游标读取不到数据为止。
1)、声明游标
声明游标主要包括游标名称和为游标提供结果集的 select 语句。因此,在声明游标时,必须指定游标名称和游标所使用的 select 语句,其语法格式为:
cursor cur_name [(input_parameter1 [,input_parameter2 ]...)]
[ return ret_type ]
is select_sentence ;
--cur_name : 表示所声明的游标名称
--ret_type : 表示执行游标操作后的返回值类型,是一个可选项
--select_sentence : 游标所使用的 select 语句,它为游标的反复读取提供了结果集
--input_parameter1 : 作为游标的 “输入参数” ,可以有多个,这是一个可选项。
--它指定用户在打开游标后向游标中传递的值, 该参数的定义和初始化为:
--para_name [in] datatype [{:= | default} para_value]
--其中 ,para_name 表示参数名称,其后面的关键字 in 表示输入方向,可以省略;
--datatype 表示参数的数据类型,但数据类型不可以指定长度,否则程序会报错;
--para_value 表示该参数的初始值或默认值,它也可以是一个表达式;para_name 参数的初始值既可以以常规的方式赋值(:=)
--也可以使用关键字 default 初始化默认值。
与声明变量一样,定义游标也应该放在 PL/SQL 块的 declare 部分