作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我们创建两个测试程序:
CREATE OR REPLACE PROCEDURE Aaaa_Test1(
pDog SYS_REFCURSOR
) IS
TYPE tDogRec is record (objid varchar2(7), lim number, debt number);
TYPE tDog IS TABLE OF tDogRec;
vDog tDog;
BEGIN
IF pDog%ISOPEN THEN
FETCH pDog BULK COLLECT INTO vDog;
IF vDog.count >= 1 THEN
FOR i IN vDog.First..vDog.Last LOOP
Dbms_Output.Put_Line('Aaaa_Test1 = '||vDog(i).Objid);
END LOOP;
END IF;
END IF;
END; -- Aaaa_Test1 Procedure
/
CREATE OR REPLACE PROCEDURE Aaaa_Test2(
pDog SYS_REFCURSOR
) IS
TYPE tDogRec is record (objid varchar2(7), lim number, debt number);
TYPE tDog IS TABLE OF tDogRec;
vDog tDog;
BEGIN
IF pDog%ISOPEN THEN
FETCH pDog BULK COLLECT INTO vDog;
IF vDog.count >= 1 THEN
FOR i IN vDog.First..vDog.Last LOOP
Dbms_Output.Put_Line('Aaaa_Test2 = '||vDog(i).Objid);
END LOOP;
END IF;
END IF;
END; -- Aaaa_Test2 Procedure
然后让我们尝试打开游标并将其按顺序传递给这些过程:
DECLARE
Vcdogcur SYS_REFCURSOR;
BEGIN
OPEN Vcdogcur FOR
select '6518535' objid, 10000 lim,0 debt
from dual
union all
select '6518536', 0,500
from dual
union all
select '5656058', 0,899
from dual
union all
select '2180965', 5000,0
from dual
union all
select '2462902', 0,100
from dual;
Aaaa_Test1(Vcdogcur);
Aaaa_Test2(Vcdogcur);
CLOSE Vcdogcur;
END;
如您所见,我无法在第二个过程中使用已提取的游标,因为 ORACLE 游标是只进式和只读的。有什么方法可以帮助解决这个任务?
我不能简单地将这些程序合二为一。需要将它们的逻辑彼此分开。
最佳答案
您需要打开游标两次。使用字符串变量来保存查询将防止您编写查询两次。
DECLARE
Vcdogcur SYS_REFCURSOR;
dyn_query varchar2(500);
BEGIN
dyn_query := 'select ''6518535'' objid, 10000 lim,0 debt
from dual
union all
select ''6518536'', 0,500
from dual
union all
select ''5656058'', 0,899
from dual
union all
select ''2180965'', 5000,0
from dual
union all
select ''2462902'', 0,100
from dual' ;
open Vcdogcur for dyn_query ;
Aaaa_Test1(Vcdogcur);
CLOSE Vcdogcur;
open Vcdogcur for dyn_query ;
Aaaa_Test2(Vcdogcur);
close Vcdogcur;
END;
/
关于神谕。在两个过程中重用游标作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17919771/
“我们企业想用一个报表工具,你有推荐吗?”这是小编这两年被问到最多的问题,但凡有点规模的公司,都想使用报表工具。 那报表工具到底怎么选,从哪几个维度出发呢?根据我多年的工作经验,举几个我认为比较重
当我在没有 sudo 的情况下运行 god 时,god 无法找到事件系统。但是,当我使用 sudo god 运行时,能够找到事件系统。 $ god -V Version: 0.13.2 Polls:
我在我的 Rails 应用程序中使用了 resque、resque-scheduler gem。为了监控 resque 工作人员的工作,我正在使用上帝工具。我想加这么一个god配置,它会监控resqu
我是一名优秀的程序员,十分优秀!