如何从 Oracle 中的函数返回数据集结果



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

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

我的示例查询:

创建或替换函数res_set_2(obj_id VARCHAR2)   返回SYS_REFCURSOR如   my_cursor SYS_REFCURSOR;开始   开放my_cursor   从表 1 中选择 t1.*、t2.* t1 在 t1.id = t2.id 上连接表 2 t2,其中 t2.bankingId=obj_id;  返回my_cursor;结束;

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

提前谢谢。

您可以使用 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

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

最新更新