📜  PL/SQL 中的游标

📅  最后修改于: 2022-05-13 01:54:20.240000             🧑  作者: Mango

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

如何使用显式光标?

使用显式光标有四个步骤。

  1. DECLARE 声明部分中的光标。
  2. 打开执行部分中的光标。
  3. 将游标中的数据提取到执行部分中的 PL/SQL 变量或记录中。
  4. 在结束 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