基于游标的记录与强引用游标

问题描述 投票:1回答:1

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

oracle plsql database-cursor
1个回答
1
投票

您使用引用游标类型来声明游标变量。然后,您可以像显式游标一样从这些游标变量中获取。在这两种情况下,您都可以并且通常会获取记录。

使用显式游标,您可以根据游标声明记录。使用强引用游标类型,我将声明一个基于用于声明引用游标的相同类型的记录。

这里有些例子:

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;
/
© www.soinside.com 2019 - 2024. All rights reserved.