我正在使用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文件的内容。你可以帮帮我吗?谢谢!
答案 0 :(得分:1)
可能一直在思考这个问题...... bfile
示例应该已经说明了发生了什么,但这假设你的原始问题有些错误而且你实际上看到了:
XML_DATA
--------------------------------------------------------------------------------
(XMLTYPE)
两个查询的括号中显示的类型表明您在SQL Developer中运行它; SQL * Plus是实际文本而不是类型。
如果是这种情况,要显示内容,您可以使用GETSTRINGVAL
method:
SELECT XMLTYPE(bfilename('TMP', 'tmp.xml'),
nls_charset_id('UTF8')).getstringval() xml_data
FROM dual;
...或者如果XML超过4000个字符GETCLOBVAL
method。
如果要将值插入表(作为XMLTYPE
列)或对其进行其他操作,则无需转换它,可以将其视为XMLType对象。这只是为了显示值。