PL/SQL 中的游标
SQL中的游标
为了执行 SQL 语句,Oracle 引擎使用工作区进行内部处理和存储信息。此工作区对 SQL 的操作是私有的。 “游标”是 PL/SQL 结构,它允许用户命名工作区并访问其中存储的信息。
光标的使用
游标的主要函数是从结果集中一次一行地检索数据,这与 SQL 命令一次对结果集中的所有行进行操作不同。当用户需要以单例方式或逐行方式更新数据库表中的记录时,将使用游标。
存储在光标中的数据称为活动数据集。 Oracle DBMS 在主内存集中有另一个预定义区域,游标在其中打开。因此,光标的大小受此预定义区域的大小限制。
光标动作
- 声明游标:通过定义返回结果集的 SQL 语句来声明游标。
- 打开:通过执行游标定义的 SQL 语句来打开和填充游标。
- Fetch:当游标打开时,可以从游标中逐一或块中取出行来进行数据操作。
- 关闭:数据操作后,显式关闭游标。
- Deallocate:最后,删除游标定义,释放所有与游标相关的系统资源。
游标类型
光标根据打开的环境进行分类。
- 隐式游标:如果 Oracle 引擎为其内部处理打开了一个游标,则它称为隐式游标。它是由 Oracle 在执行查询时为用户“自动”创建的,并且更易于编码。
- 显式游标:也可以根据需要打开游标以通过 PL/SQL 块处理数据。这种用户定义的光标称为显式光标。
显式游标
显式游标在 PL/SQL 块的声明部分中定义。它是在返回多行的 SELECT 语句上创建的。适合游标的名称。
创建游标的一般语法:
CURSOR cursor_name IS select_statement;
cursor_name – A suitable name for the cursor.
select_statement – A select query which returns multiple rows
如何使用显式光标?
使用显式光标有四个步骤。
- DECLARE 声明部分中的光标。
- 打开执行部分中的光标。
- 将游标中的数据提取到执行部分中的 PL/SQL 变量或记录中。
- 在结束 PL/SQL 块之前关闭执行部分中的游标。
句法:
DECLARE variables;
records;
create a cursor;
BEGIN
OPEN cursor;
FETCH cursor;
process the records;
CLOSE cursor;
END;
参考:
https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/01_oview.htm#740