【发布时间】:2018-12-29 15:57:07
【问题描述】:
我是 Oracle 数据库和 pl/sql 语言的新手。我的问题是强引用游标和基于游标的记录之间有什么区别 - 例如“var_exmpl”变量将存储游标值,即“cur_exmpl%rowtype”
【问题讨论】:
标签: oracle plsql database-cursor
我是 Oracle 数据库和 pl/sql 语言的新手。我的问题是强引用游标和基于游标的记录之间有什么区别 - 例如“var_exmpl”变量将存储游标值,即“cur_exmpl%rowtype”
【问题讨论】:
标签: oracle plsql database-cursor
您使用 ref 游标类型来声明游标变量。然后,您可以像使用显式游标一样从这些游标变量中获取。在这两种情况下,您都可以并且通常会提取到记录中。
使用显式游标,您可以根据游标声明记录。使用强引用游标类型,我将声明基于用于声明引用游标的相同类型的记录。
这里有一些例子:
DECLARE
TYPE employee_rt IS RECORD
(
employee_id employees.employee_id%TYPE,
salary employees.salary%TYPE
);
TYPE strong_rc IS REF CURSOR
RETURN employee_rt;
strong_rec employee_rt;
CURSOR twocols_cur
IS
SELECT employee_id, salary FROM employees;
rec_from_explicit_cur twocols_cur%ROWTYPE;
BEGIN
OPEN strong_rc FOR SELECT employee_id, salary FROM employees;
FETCH strong_rc INTO strong_rec;
CLOSE strong_rc;
OPEN twocols_cur;
FETCH twocols_cur INTO rec_from_explicit_cur;
CLOSE twocols_cur;
END;
/
【讨论】: