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;
/