http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/static.htm#i45288

 

本文内容

  • SQL 游标(隐式)
  • 显式游标
  • 参考

 

PL/SQL 使用隐式游标和显式游标。PL/SQL 为所有 SQL 数据操纵语句隐式声明一个游标,包括只返回一行的查询。若你想准确控制查询,可以在任何 PL/SQL 块(block)、子程序(subprogram)或包(package)中的声明部分声明一个显式游标。

必须为返回多行的查询声明显式游标。

本文示例使用的表,位于 Oracle OE Schema 示例。另外,示例在 SQL*PLUS 下运行。示例最后 "/" 符号可让 SQL*PLUS 编译代码;而在 PL/SQL Developer 下则可有可无。

 

SQL 游标(隐式)


SQL 游标由 PL/SQL 自动管理。你不用写代码来处理这些游标。可以通过 SQL 游标的属性来追踪一个游标的执行信息。

SQL 游标属性

  • %FOUND 属性:一个 DML 语句改变了行?
  • %ISOPEN 属性:对 SQL 游标一直为 FALSE
  • %NOTFOUND 属性:一个 DML 语句改变行失败了?
  • %ROWCOUNT 属性:受影响的行有多少?

示例 1:演示 %FOUND 属性。

FROM departments;
DECLARE
  dept_no NUMBER(4) := 270;
BEGIN
  DELETE FROM dept_temp WHERE department_id = dept_no;
  IF SQL%FOUND THEN
    -- delete succeeded
    INSERT INTO dept_temp VALUES (270, 'Personnel', 200, 1700);
  END IF;
END;
/

相关文章: