我需要对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'帮助'将我的变量名称解释为数据库列。有没有办法让它使用我的变量的内容,而不是?
答案 0 :(得分:3)
试试这个:
select XMLElement(evalname label1,value1) into result_xml from dual;
这似乎是by design。如果没有EVALNAME
,label1
将用作文字而非变量。
(在普通的SQL或PL / SQL编程中,这似乎是一个非常糟糕的想法。也许它在XML上下文中有意义?)