1
如果PartNumber =“926-AA”,如何选择值“USPrice”?ORA-19025 - 使用extractValue时节点太多
我的选择始终以ORA-19025结尾!
SELECT extractValue(OBJECT_VALUE, '/PurchaseOrder/Items/Item/USPrice/text()') "PRICE" FROM TMP_TABLE
WHERE extractValue(OBJECT_VALUE,'/PurchaseOrder/Items/Item[@PartNumber]') = '926-AA';
下面是DDL:
CREATE TABLE TMP_TABLE OF XMLType;
INSERT INTO TMP_TABLE VALUES (XMLType(bfilename('XMLDIR', 'purchaseOrder.xml'),nls_charset_id('AL32UTF8')));
下面是数据:
<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
<Address Type="Shipping">
<Name>Ellen Adams</Name>
<Street>123 Maple Street</Street>
<City>Mill Valley</City>
<State>CA</State>
<Zip>10999</Zip>
<Country>USA</Country>
</Address>
<Address Type="Billing">
<Name>Tai Yee</Name>
<Street>8 Oak Avenue</Street>
<City>Old Town</City>
<State>PA</State>
<Zip>95819</Zip>
<Country>USA</Country>
</Address>
<DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes>
<Items>
<Item PartNumber="872-AA">
<ProductName>Lawnmower</ProductName>
<Quantity>1</Quantity>
<USPrice>148.95</USPrice>
<Comment>Confirm this is electric</Comment>
</Item>
<Item PartNumber="926-AA">
<ProductName>Baby Monitor</ProductName>
<Quantity>2</Quantity>
<USPrice>39.98</USPrice>
<ShipDate>1999-05-21</ShipDate>
</Item>
</Items>
</PurchaseOrder>
预先感谢您
好吧,我必须使用标准中的XPath语法,而不是在带EXTRACTVALUE的where语句中使用它。尼斯。但是,使用XMLTABLE的代码示例运行时出现错误ORA-01722 :-( – happymapper
当您引用Oracle错误编号时,是否可以将相应的错误消息与它一起?没有人能够期望记住所有错误及其相关错误代码!另外,强迫那些试图帮助你浪费时间寻找你手指上的东西的人是非常浪费时间和浪费的(对不起,宠坏了;你碰巧是打破骆驼背的秸秆!)最后,如果usprice节点可以包含不是数字的信息,那么将xmltable列声明中的数据类型更改为varchar2。 – Boneist
我明白并承诺改进。感谢您提供有用的答案。现在,everthing可以正常工作。 – happymapper