1

Oracleデータベースの一部のデータを処理してから、XMLとして出力する必要があります。XMLElementとそれに付随するメソッドを使用しています。ただし、varcharをPL / SQL関数に渡してから、その変数をXMLElementに渡すと、次のように、内容ではなく変数名が出力されることがわかりました。

create or replace function gen_elem_tmp(label1 varchar2, value1 varchar2)
  return XMLType
is
  result_xml XMLType;
begin
  select XMLElement(label1,value1) into result_xml from dual;
  return result_xml;
end;

> select gen_elem_tmp('myname','myvalue') from dual;

GEN_ELEM_TMP('MYNAME','MYVALUE')
------------------------------------------------
<LABEL1>myvalue</LABEL1>

これは、変数名をデータベース列として解釈するXMLElementであると推測しています。代わりに、変数の内容を使用する方法はありますか?

4

1 に答える 1

4

これを試して:

  select XMLElement(evalname label1,value1) into result_xml from dual;

これは仕様によるもののようです。がないEVALNAME場合、label1変数の代わりにリテラルとして使用されます。

(通常のSQLまたはPL / SQLプログラミングでは、これは本当にひどい考えのように思えます。おそらく、XMLコンテキストでは意味がありますか?)

于 2012-07-17T18:06:26.620 に答える