【问题标题】:Getting Resultset of a sys_refcursor on PL/SQL在 PL/SQL 中获取 sys_refcursor 的结果集
【发布时间】:2016-05-06 17:41:49
【问题描述】:

我有一个返回动态 SQL 查询 sys_refcursor 的函数,因此该游标动态返回列。我想在执行我的函数后查询 Cursor 的 sql

Select tryit('MyTable_Name',' condition = conditionParameter and  condition2=Parameter2') retCursor 
from dual

它以一列一行的形式返回 PL/SQL SQL Windw 上的游标。单击三个点后,它返回结果集。如何在不单击任何点的情况下获得结果集。

当我将函数转换为 xmltype 并将其列传递并转换为 xmltable 时,它​​会显示结果集,但我需要根据传递的参数动态创建列。

Select * from  xmltable('/ROWSET/ROW'
PASSING xmltype(tryit('MyTable_Name','condition = conditionParameter and  condition2=Parameter2'))
columns
Col1  PATH 'Col1',
Col2  PATH 'Col2',
Col3  PATH 'Col3' ,
Col4  PATH 'Col4')

注:Oracle 11g、PL/SQL Developer 8

【问题讨论】:

  • 引用游标是传递给客户端应用程序的指针。应用程序负责处理结果集。 PL/SQL Developer 是一个开发者的工具(线索就在名字里)。所以获取和显示引用光标需要手动操作。

标签: oracle plsql plsqldeveloper


【解决方案1】:

在 SQL Developer 中(我假设在 PL/SQL Developer 中有类似的东西),你不需要 SQL 查询来包装函数;相反,您可以运行将输出光标的 PL/SQL 脚本:

VARIABLE cur REFCURSOR;

BEGIN
  :cur := tryit(
           'MyTable_Name',
           ' condition = conditionParameter and  condition2=Parameter2'
         );
END;
/

PRINT cur;

【讨论】:

    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 2011-07-03
    • 2023-03-06
    • 2019-10-11
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多