基于光标的记录vs强引用光标

时间:2018-12-29 15:57:08

标签: oracle plsql database-cursor

我是Oracle数据库和pl / sql语言的新手。我的问题是强引用游标和基于游标的记录之间有什么区别-例如“ var_exmpl”变量,它将存储光标值,即“ cur_exmpl%rowtype”

1 个答案:

答案 0 :(得分:1)

您使用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;
/