1

cursonとtypeを使用せずに、Oracleの関数からデータセットの結果を返すにはどうすればよいですか。

私の問題は、関数が結果を返すときに、結果がコンマ(、)で区切られていることです。表形式の結果が欲しい...

私のサンプルクエリ:


関数の作成または置換res_set_2(obj_id VARCHAR2)
   SYS_REFCURSORを返す
なので
   my_cursor SYS_REFCURSOR;
始める
   my_cursorFORを開く
   SELECT t1。*、t2。* FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id WHERE t2.bankingId = obj_id;
  my_cursorを返します。
終わり;

私に最善の解決策を提案してください。

前もって感謝します。

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 を取得しようとしたことはありません。

DataSet に関しては、この投稿が役立つかもしれません

于 2012-06-20T10:08:07.127 に答える