Sql 是否可以在另一个过程中打开包中的游标?

Sql 是否可以在另一个过程中打开包中的游标?,sql,plsql,cursor,toad,Sql,Plsql,Cursor,Toad,只是想一想,有可能打开另一个程序包中的游标吗 示例:pack_name有一个过程myprocedure。在此过程中打开的光标可以在其他过程中打开吗? i、 e可以打开LV_TEST_CUR进行LV_查询;在另一个程序中编写 create or replace package pack_name is create or replace PROCEDURE myprocedure AS LV_TEST_CUR SYS_REFCURSOR; LV_QUERY VARCHAR2(200);

只是想一想,有可能打开另一个程序包中的游标吗

示例:pack_name有一个过程myprocedure。在此过程中打开的光标可以在其他过程中打开吗? i、 e可以打开LV_TEST_CUR进行LV_查询;在另一个程序中编写

create or replace package pack_name
is 
create or replace 
PROCEDURE myprocedure
AS
  LV_TEST_CUR SYS_REFCURSOR;
  LV_QUERY VARCHAR2(200);
  LV_DATE  DATE;
BEGIN
  LV_QUERY:='select sysdate as mydate from dual';



END myprocedure;
end pack_name;

你为什么要这么做?在一个包的过程中定义用于ref游标的查询,然后在一个完全不同的包的过程中打开它,这是没有意义的

当然这是可能的,尽管您的尝试不起作用-您只是传递了包含要用于打开ref游标的select语句的字符串-但这不是最好的设计。首先,您现在无法使用动态sql,否则您可能会使用静态sql打开ref游标。动态sql仅在运行时检查,而不是在编译时检查,因此在尝试打开游标之前,您不会知道任何语法错误

通常,我会坚持在定义的位置打开ref光标