错误在确定的行中时是否有可能发生异常?是否可以在PL/SQL中对精确行进行异常处理?
例如,这是我的代码片段:
l_XMLvalue := l_xmltype.extract('/SHOW_SHIPMENT_005/DATAAREA/SHOW_SHIPMENT/SHIPMENT/SHIPITEM/QUANTITY/VALUE/text()').getStringVal();
dbms_output.put_line('QUANTITY: '||l_XMLvalue);
l_XMLdocument_id := l_xmltype.extract('/SHOW_SHIPMENT_005/DATAAREA/SHOW_SHIPMENT/SHIPMENT/SHIPITEM/DOCUMNTREF/DOCUMENTID/text()').getStringVal();
dbms_output.put_line('DOCUMENT ID:' ||l_XMLdocument_id);
l_XMLdoc_release := l_xmltype.extract('/SHOW_SHIPMENT_005/DATAAREA/SHOW_SHIPMENT/SHIPMENT/SHIPITEM/DOCUMNTREF/USERAREA/DOCUMENTRELEASE/text()').getStringVal();
dbms_output.put_line('DOCUMENT RELEASE:' ||l_XMLdoc_release);
l_XMLlinenum := l_xmltype.extract('/SHOW_SHIPMENT_005/DATAAREA/SHOW_SHIPMENT/SHIPMENT/SHIPITEM/DOCUMNTREF/LINENUM/text()').getStringVal();
dbms_output.put_line('LINE NUMBER:' ||l_XMLlinenum);
l_XMLsch_lnum := l_xmltype.extract('/SHOW_SHIPMENT_005/DATAAREA/SHOW_SHIPMENT/SHIPMENT/SHIPITEM/DOCUMNTREF/SCHLINENUM/text()').getStringVal();
dbms_output.put_line('SCHIPMENT LINE NUMBER:' ||l_XMLsch_lnum);
当函数提取正在试图获取价值,会有NULL,该程序将停止。这是可能的例外:
WHEN SELF_IS_NULL THEN
dbms_output.put_line('There is a problem with empty values in XML file');
这是我想做的事情是检查在哪一行发生错误,并写异常其准确值是错误。