Sql 使用带引号的xpath时extractvalue失败
运行查询时出现“ORA-21560:参数3为空、无效或超出范围”错误:Sql 使用带引号的xpath时extractvalue失败,sql,oracle,Sql,Oracle,运行查询时出现“ORA-21560:参数3为空、无效或超出范围”错误: SELECT extractvalue(xmltype(blob2clob(shblobdata.blobdata)), '/booked-order/ads/online-content[name="quantity"]/value') FROM shblobdata WHERE id=...; 完全错误是: ORA-21560: argument 3 is null, invalid, or out of ra
SELECT extractvalue(xmltype(blob2clob(shblobdata.blobdata)),
'/booked-order/ads/online-content[name="quantity"]/value')
FROM shblobdata
WHERE id=...;
完全错误是:
ORA-21560: argument 3 is null, invalid, or out of range
ORA-06512: at "SYS.DBMS_LOB", line 978
ORA-06512: at "MORAS.BLOB2CLOB", line 14
21560。00000-“参数%s为空、无效或超出范围”
*原因:参数应为非null的有效值,但
传入的参数值为null、无效或超出范围。
示例包括LOB/文件的位置或大小
参数的值超出范围1到(4GB-1),
或者使用无效的打开模式打开文件等
*措施:检查您的程序并更正例程的调用者
不传递null、无效或超出范围的参数值
我曾尝试将“数量”更改为“数量”(将单引号更改为两个撇号),但出现了相同的错误
blob的内容是:
<?xml version="1.0" encoding="utf-8"?>
<booked-order>
<ads>
<online-content>
<name>quantity</name>
<value>19872</value>
</online-content>
</ads>
</booked-order>
量
19872
异常显然是由BLOB2CLOB()
引发的,它不是Oracle内置的。这是你自己写的东西,或是从互联网上的某个地方摘取的东西。所以我们对此无能为力
更一般的一点是,为什么要将XML存储在BLOB中?最好的方法是将其存储在定义为Oracle的XMLTYPE数据类型的列中。否则,将其存储为CLOB 异常显然是由
BLOB2CLOB()
引发的,它不是Oracle内置的。这是你自己写的东西,或是从互联网上的某个地方摘取的东西。所以我们对此无能为力
更一般的一点是,为什么要将XML存储在BLOB中?最好的方法是将其存储在定义为Oracle的XMLTYPE数据类型的列中。否则,将其存储为CLOB 问题出在自定义函数MORAS.BLOB2CLOB中 此外,错误消息清楚地显示了
ORA-06512:at“MORAS.BLOB2CLOB”,第14行
当您避开BLOB2CLOB并使用
SELECT EXTRACTVALUE (xmltype ( (shblobdata.blobdata)), '/booked-order/ads/online-content[name="quantity"]/value')
FROM (SELECT '<?xml version="1.0" encoding="utf-8"?>
<booked-order>
<ads>
<online-content>
<name>quantity</name>
<value>19872</value>
</online-content>
</ads>
</booked-order>
' blobdata
FROM DUAL) shblobdata
;
如果可以,请继续讨论XML部分。问题出在自定义函数MORAS.BLOB2CLOB中 此外,错误消息清楚地显示了
ORA-06512:at“MORAS.BLOB2CLOB”,第14行
当您避开BLOB2CLOB并使用
SELECT EXTRACTVALUE (xmltype ( (shblobdata.blobdata)), '/booked-order/ads/online-content[name="quantity"]/value')
FROM (SELECT '<?xml version="1.0" encoding="utf-8"?>
<booked-order>
<ads>
<online-content>
<name>quantity</name>
<value>19872</value>
</online-content>
</ads>
</booked-order>
' blobdata
FROM DUAL) shblobdata
;
如果可以的话,请继续讨论XML部分。您有
MORAS.BLOB2CLOB
的源代码吗?看起来这是一个如何调用另一个函数的问题,而不一定是BLOB中的数据;我认为它还没有发展到extractvalue()
,甚至xmltype()
。你有MORAS.BLOB2CLOB
的源代码吗?看起来这是一个如何调用另一个函数的问题,而不一定是BLOB中的数据;我不认为它会发展到extractvalue()
,甚至xmltype()
。