【发布时间】:2015-02-03 21:20:02
【问题描述】:
当SELECT 仅与CELLS 表一起使用时,以下代码有效。但是,当有多个表连接时,下面的类型就不再合适了。
PROCEDURE drawComponent(title IN VARCHAR2, tbl IN VARCHAR2, link IN VARCHAR2) IS
TYPE ref_typ IS REF CURSOR;
var_ref ref_typ;
rec CELLS%ROWTYPE;
BEGIN
OPEN var_ref FOR 'SELECT CELLS.ID as CELLID, CELLS.NUM as CELLNUM, CELLS.' || link || ' as ID, ' || tbl || '.REMOVED as REMOVED FROM CELLS LEFT OUTER JOIN ' || tbl || ' ON CELLS.' || link || ' = ' || tbl || '.ID ORDER BY CELLS.NUM';
loop
FETCH var_ref INTO rec;
EXIT WHEN var_ref%NOTFOUND;
htp.p(rec.CELLID);
end loop;
END;
问题是我应该声明 rec 的类型是什么?
【问题讨论】:
-
也许是 sys_refcursor?对不起,我有点累了,不想写详细的例子:)
-
如果我写
rec.CELLNUM,我有Invalid reference to variable 'REC' -
德米特里,谢谢,好好休息 :)
-
我刚刚在 oracle 12.1 上进行了检查 - 没有问题,您问题中的代码在这两种情况下都可以正常工作。
-
只有当我选择以下答案时它才有效。否则当然 CELLS 表对其他表字段一无所知。
标签: oracle plsql oracle-apex