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 回答