You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从现有BLOB提取单个XML值?Oracle XMLTYPE调用报错求助

解决Oracle中BLOB转XMLTYPE的ORA-06553错误

问题原因

你遇到的ORA-06553: PLS-306错误,是因为直接将BLOB类型传入XMLTYPE构造函数时缺少字符集参数。BLOB是二进制数据,Oracle无法自动识别其中XML的编码格式,必须显式指定才能正确解析。

修正方案

方案1:显式指定字符集(推荐)

根据你BLOB中XML的实际编码,在XMLTYPE构造函数中添加字符集ID参数:

SELECT
   XMLTYPE( t.intfc_rqst_xml, NLS_CHARSET_ID('UTF8') ).EXTRACT('//*/text()').getStringVal()
FROM
   INTERFACE_MESSAGE_INFO t;
  • 替换'UTF8'为你XML实际使用的编码(如'GBK'、'AL32UTF8'等),可通过XML声明中的encoding属性确认编码类型。
  • NLS_CHARSET_ID()函数用于将字符集名称转换为Oracle识别的ID值。

方案2:先转CLOB再转XMLTYPE

如果BLOB的编码与数据库默认字符集一致,也可以先将BLOB转换为CLOB,再传入XMLTYPE:

SELECT
   XMLTYPE( TO_CLOB( t.intfc_rqst_xml ) ).EXTRACT('//*/text()').getStringVal()
FROM
   INTERFACE_MESSAGE_INFO t;

注意:这种方式依赖数据库默认字符集,若BLOB编码与默认不一致,可能出现乱码问题。

内容的提问来源于stack exchange,提问作者2020 Fraud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 01:36:32