我在 PL/SQL 中有很多命名游标,如下所示:
cursor MY_CURSOR_01 is select * from my_table_01;
cursor MY_CURSOR_02 is select * from my_table_02;
我想在 dbms_xmlgen.newContext
过程中使用它们,该过程需要包含实际查询的 SYS_REFCURSOR
或 VARCHAR2
。
我已经知道我可以做到:
dbms_xmlgen.newContect('select * from my_table_01');
但我想重用现有的游标,而不将它们重写为字符串查询。
有什么想法吗?我使用的是 Oracle 10gR2。
最佳答案
我认为这样的函数不存在,因为 Oracle 的语言规范不允许将 cursor
对象作为参数传递。除非 Oracle 在某处使用了某种魔法,否则没有办法在不使用 refcursor
的情况下一般引用 cursor
。
但是,您不需要将 SQL 嵌入字符串中即可使用 sys_refcursor
。下面是一个非常简单的示例,显示可以使用静态 SQL 打开 sys_refcursor
:
DECLARE
c SYS_REFCURSOR;
BEGIN
OPEN c FOR SELECT * FROM DUAL;
CLOSE c;
END;
关于oracle - 将常规 CURSOR 传递给需要 SYS_REFCURSOR 的 PL/SQL 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23314516/