Plsql 在同一程序包的另一个过程中使用游标

Plsql 在同一程序包的另一个过程中使用游标,plsql,Plsql,我们可以在同一个包的另一个过程中使用在包的一个过程中声明的游标吗?否,与在过程中声明的任何内容一样,它是该过程的本地游标。但是,您可以在包级别声明游标,并在两个过程中使用它 package body my_pkg is cursor emp_cur is select * from emp; procedure p1 is begin open emp_cur; ... close emp_cur; end p1; pro

我们可以在同一个包的另一个过程中使用在包的一个过程中声明的游标吗?

否,与在过程中声明的任何内容一样,它是该过程的本地游标。但是,您可以在包级别声明游标,并在两个过程中使用它

package body my_pkg is

   cursor emp_cur is select * from emp;

   procedure p1 is 
   begin
      open emp_cur;
      ...
      close emp_cur;
   end p1;

   procedure p2 is 
   begin
      open emp_cur;
      ...
      close emp_cur;
   end p2;
end;
但是请注意,如果过程p1打开emp_cur但没有关闭它,那么如果p2尝试打开它,它将得到一个异常