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

时间:2015-02-19 07:47:27

标签: sql plsql cursor toad

只是一个想法,是否有可能打开另一个procrdure包中的光标?

示例: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 个答案:

答案 0 :(得分:0)

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

当然可以(尽管你的尝试没有成功) - 你只是在传递包含你想用来打开你的参考光标的select语句的字符串 - 但它&# 39;不是最好的设计。首先,你现在已经停止使用动态sql了,否则你可以用静态sql打开引用游标(动态sql只在运行时检查,而不是在编译时检查,所以你赢了'在尝试打开游标之前,请先了解任何语法错误。

一般情况下,我会坚持在定义的同一个地方打开引用光标。