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

时间:2012-06-20 06:39:34

标签: c# oracle11g

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

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

我的示例查询:



CREATE OR REPLACE FUNCTION res_set_2(obj_id VARCHAR2)
   RETURN SYS_REFCURSOR
AS
   my_cursor SYS_REFCURSOR;
BEGIN
   OPEN my_cursor FOR 
   SELECT t1.*, t2.* FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id WHERE t2.bankingId=obj_id;
  RETURN my_cursor;
END;

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

先谢谢。

1 个答案:

答案 0 :(得分: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

对于DataSet,也许this post可以提供帮助