oracle - 将常规 CURSOR 传递给需要 SYS_REFCURSOR 的 PL/SQL 过程

标签 oracle plsql cursor sys-refcursor

我在 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_REFCURSORVARCHAR2

我已经知道我可以做到:

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/

相关文章:

sql - 向现有表添加一列,其值依赖于其他列

css - 自定义光标 : Rule of Thumb

java - 需要帮助查找 Oracle 异常.. Java+Oracle+Prepared Statement

oracle - 可以在 Oracle 存储过程中使用 GRANT 吗?

oracle - 从 oracle : Best practices 生成大型 xml 文件

oracle - 在 Oracle DB 上运行时是否可以更改查询的并行度?

inheritance - PL/SQL 对象继承 - 使用具有参数的基本构造函数

oracle - PLS-00103 : Encountered the symbol “end-of-file” when expecting one of the following

Android 光标崩溃

sql - SQL CREATE VIEW 的 id 编号如何在 Android 中工作?