1

我们如何在不使用 curson 和 type 的情况下从 oracle 中的函数返回数据集结果。

我的问题是当我的函数返回结果时,结果以逗号(,)分隔。我想要表格格式的结果...

我的示例查询:


创建或替换函数 res_set_2(obj_id VARCHAR2)
   返回 SYS_REFCURSOR
作为
   my_cursor SYS_REFCURSOR;
开始
   打开 my_cursor FOR
   SELECT t1.*, t2.* FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id WHERE t2.bankingId=obj_id;
  返回我的光标;
结尾;

建议我最好的解决方案..

提前致谢。

4

1 回答 1

0

您可以使用amlagg获取 XML 中的查询结果:

CREATE OR REPLACE FUNCTION res_set_2(obj_id VARCHAR2)
   RETURN varchar2 AS
   my_xml varchar2(32767);
BEGIN

   SELECT xmlelement("DATASET", xmlagg(
                       xmlelement("ROW", xmlforest(t1.col1, t1.col2, ..., t2.col1, ...))
                                      )).getStringVal()
     INTO my_xml 
     FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id 
    WHERE t2.bankingId=obj_id;

   RETURN my_xml;
END;

请注意,为简单起见,我返回了 varchar2,我从未尝试在 C# 中获取 XMLTYPE

至于数据集,也许这篇文章可以提供帮助

于 2012-06-20T10:08:07.127 回答