1

我使用的是 Windows 7,并通过以下语句在 Oracle 中创建了一个目录:

CREATE DIRECTORY tmp AS 'D:/tmp';

我还创建了相应的文件夹 D:/tmp。在文件夹 D:/tmp 中,我放入了一个 xml 文件“tmp.xml”。然后,在 Oracle 中,我运行以下语句来读取 xml 文件的内容:

SELECT XMLTYPE(bfilename('tmp', 'tmp.xml'), nls_charset_id('UTF8')) xml_data
FROM dual;

我得到了结果:

XML_DATA


我看不到 xml 文件的内容。你可以帮帮我吗?谢谢!

4

1 回答 1

1

可能是想多了……这个bfile例子应该表明发生了什么,但这假设你原来的问题有点错误,你实际上看到的是:

XML_DATA                                                                       
--------------------------------------------------------------------------------
(XMLTYPE) 

两个查询的括号中显示的类型表明您正在 SQL Developer 中运行它;SQL*Plus 如何处理实际文本而不是类型。

如果是这种情况,要显示内容,您可以使用以下GETSTRINGVAL方法

SELECT XMLTYPE(bfilename('TMP', 'tmp.xml'),
    nls_charset_id('UTF8')).getstringval() xml_data
FROM dual;

...或者如果 XML 超过 4000 个字符,则该GETCLOBVAL方法

如果您将值插入到表中(作为XMLTYPE列)或对其进行一些其他操作,那么您不需要转换它,您可以将其视为 XMLType 对象。这只是为了显示值。

于 2013-06-05T08:56:46.983 回答