不能在XMLElement中使用varchar2变量?

时间:2012-07-17 16:26:27

标签: xml plsql

我需要对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'帮助'将我的变量名称解释为数据库列。有没有办法让它使用我的变量的内容,而不是?

1 个答案:

答案 0 :(得分:3)

试试这个:

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

这似乎是by design。如果没有EVALNAMElabel1将用作文字而非变量。

(在普通的SQL或PL / SQL编程中,这似乎是一个非常糟糕的想法。也许它在XML上下文中有意义?)