是否可以在另一个过程中打开包中的游标?
Posted
技术标签:
【中文标题】是否可以在另一个过程中打开包中的游标?【英文标题】:Is it possible to open cursor which is in package in another procedure? 【发布时间】:2015-02-19 07:47:27 【问题描述】:只是想一想,是否可以在另一个程序中打开包中的光标?
示例:pack_name 有一个过程 myprocedure。在这个程序中打开的光标可以在另一个程序中打开吗? 即可以为 LV_QUERY 打开 LV_TEST_CUR;写在另一个过程中?
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;
【问题讨论】:
【参考方案1】:你为什么想要?在一个包的过程中定义用于引用游标的查询然后在完全不同的包的过程中打开它是没有意义的。
当然有可能(尽管您的尝试行不通)-您只是传递包含要用于打开引用光标的选择语句的字符串-但这不是最好的设计。首先,您现在被困在使用动态 sql 中,否则您可能已经能够使用静态 sql 打开引用游标(动态 sql 仅在运行时检查,而不是在编译时检查,因此您不会知道任何语法错误,直到您尝试打开游标)。
一般来说,我会坚持在定义的相同位置打开引用光标。
【讨论】:
以上是关于是否可以在另一个过程中打开包中的游标?的主要内容,如果未能解决你的问题,请参考以下文章