我有一位同事需要将文本从 PL/SQL 方法转换为符合 XML 的文本,因为他正在通过更新文本模板来构建 excel 电子表格。
PL/SQL 中是否有将文本转换/编码为 XML 兼容文本的方法?
好吧,如果你只是想转换 XML 字符,你会想做类似的事情......
outgoing_text := DBMS_XMLGEN.CONVERT(incoming_text)
其中outgoing_text
和incoming_text
都是 VARCHAR2 或 CLOB。
您可以指定第二个参数,但默认为DBMS_XMLGEN.ENTITY_ENCODE
... 它还可以通过DBMS_XMLGEN.ENTITY_DECODE
作为第二个参数传递来解码 XML 实体。
更高版本的 oracle 具有用于操作 XML 数据的内置XML 包。
例如,这是您的同事想做的事情吗?:
SELECT DBMS_XMLGEN.getXML('SELECT * FROM emp') FROM dual;
除了 dbms_xmlgen 之外,还可以使用 sql 方法,xmlelement 然后将值提取回来。
select extract(xmlelement("mytest",my_variable),'mytest/text()') from dual;
xmlelement 函数将使文本符合 XML,然后使用提取函数,它将按原样提取文本。(注意:extractValue 函数会将文本转换回不符合 XML 的版本。)。
hamischmcn 选项简单明了,但它在 oracle 表单中不起作用,我尝试了很多使用它,但什么也没有……你可以手动生成 xml,使用类似这样的东西
utl_file.put_line_nchar (file_id, 'xml version="1.0" encoding="utf-8"');
utl_file.put_line_nchar (file_id, '开始');
--A FOR 循环,您可以在其中定义标签
utl_file.put_line_nchar (file_id, '/Start');
注意:编辑器不允许我将 < > 符号放在 xml 和标签标题中
关于 Rulas 在 Oracle Forms 上的问题,Forms 有很多不能做的事情(在各种版本中),您需要使用数据库包。
因此,编写一个执行 dbms_xmlgen 并返回 varchar2 或 clob 的数据库 PL/SQL 函数,具体取决于 XML 的大小。然后您可以从 Forms 中调用该函数。当您将数据返回到 Forms 时,使用 text_io 或 webutil 将 XML 文件推送到 Excel。
或者留在数据库端并使用 utl_file 将 XML 输出推送到您可以获取它的目录。