下面的W.r.t代码我不能将fetch-into-variable的类型声明为基本表的%ROWTYPE,因为SYS_REFCURSOR位于select连接两个表的选择上,并且还选择了对两个基础表的属性调用的几个函数;即我不能宣布为L_RECORD T%ROWTYPE如何声明一个弱类型的SYS_REFCURSOR变量的%ROWTYPE?
---
DECLARE
P_RS SYS_REFCURSOR;
L_RECORD P_RS%ROWTYPE;
BEGIN
CAPITALEXTRACT(
P_RS => P_RS
);
OPEN P_RS;
LOOP
BEGIN
FETCH P_RS INTO L_RECORD;
EXIT WHEN P_RS%NOTFOUND;
...
EXCEPTION
WHEN OTHERS THEN
...
END;
END LOOP;
CLOSE P_RS;
END;
--------
CREATE or REPLACE PROCEDURE CAPITALEXTRACT
(
p_rs OUT SYS_REFCURSOR
) AS
BEGIN
OPEN p_rs for
select t.*,tminusone.*, f(t.cash), g(t.cash) FROM T t, TMINUSONE tminusone
where t.ticket=tminusone.ticket;
END CAPITALEXTRACT;
当然我不希望作为SYS_REFCURSOR返回与列来定义静态表R和再声明为L_RECORD R%ROWTYPE。
因此,问题: 如何声明一个弱类型的SYS_REFCURSOR变量的%ROWTYPE?
好棒的人,我一直在寻找一年如何做到这一点,这解释了它最好的。注意:我不需要CAPITALEXTRACT(P_RS => P_RS);线。 (事实上它错了,不知道它做了什么,所以我注释掉了,然后我的pl/sql运行得很好) – armyofda12mnkeys
@ armyofda12mnkeys - 很高兴它有帮助。 CAPITALEXTRACT是针对这个问题的一个特定功能,而不是解决方案的固有内容,所以不用担心。 –