Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml PL-SQL:捕获特定错误_Xml_Oracle_Stored Procedures_Plsql - Fatal编程技术网

Xml PL-SQL:捕获特定错误

Xml PL-SQL:捕获特定错误,xml,oracle,stored-procedures,plsql,Xml,Oracle,Stored Procedures,Plsql,我有一个存储过程,其中在涉及xml字符串的变量赋值中,可能出现以下错误: SQL错误:ORA-31011:XML分析失败 ORA-19202:XML处理中发生错误 LPX-00242:符号与(“&”)字符的使用无效(使用“&”) 我将赋值包含在一个begin异常块中,在该块中声明了错误-19202,但它不起作用。捕获-31011错误是有效的,只是想知道是否有方法捕获LPX-00242,因为它是一个解析大量xml消息的过程,抛出少量错误(大多数xml消息都可以),要求特定于包含“&”的消息,因此,

我有一个存储过程,其中在涉及xml字符串的变量赋值中,可能出现以下错误:

SQL错误:ORA-31011:XML分析失败 ORA-19202:XML处理中发生错误 LPX-00242:符号与(“&”)字符的使用无效(使用“&”)

我将赋值包含在一个begin异常块中,在该块中声明了错误-19202,但它不起作用。捕获-31011错误是有效的,只是想知道是否有方法捕获LPX-00242,因为它是一个解析大量xml消息的过程,抛出少量错误(大多数xml消息都可以),要求特定于包含“&”的消息,因此,我只需要捕获并清理这些消息,以避免使过程过载,现在已经有点慢了

据我所知,-31011错误的发生可能有很多原因,不仅仅是因为&字符

提前谢谢

编辑


在异常处理程序中,您可以在SQLERRM中搜索LPX-00242并以特定方式处理它

EXCEPTION
  WHEN error_ampersand THEN
    l_error := sqlerrm;
    if instr(l_error,'LPX-00242')>0 
    then
      -- do it one way
    else
      -- do something else
    end if;
END;

在异常处理程序中,您可以在SQLERRM中搜索LPX-00242并以特定方式处理它

EXCEPTION
  WHEN error_ampersand THEN
    l_error := sqlerrm;
    if instr(l_error,'LPX-00242')>0 
    then
      -- do it one way
    else
      -- do something else
    end if;
END;

您可以显示代码的相关部分吗?添加了代码的相关部分,谢谢:)您可以尝试一些类似if instr(SQLERRM,'LPX-00242')的方法,这意味着您只是在清理需要它的消息。有些东西我没有得到<代码>规范化符号(消息)是一个过程。虽然它可能会规范化消息,但不会返回规范化消息。所以下面的语句应该再次失败。当然,这取决于从哪里读取
消息。我在这里遗漏了什么吗?你能展示你代码的相关部分吗?添加了代码的相关部分,谢谢:)你可以尝试一些类似if instr(SQLERRM,'LPX-00242')的东西,这意味着你只是在清理需要它的消息。一些我没有得到的东西<代码>规范化符号(消息)
是一个过程。虽然它可能会规范化消息,但不会返回规范化消息。所以下面的语句应该再次失败。当然,这取决于从哪里读取
消息。谢谢你,雷内,这是我需要的,因为如果有另一个错误属于同一个ORA-31011,我应该在ELSE语句中提出,然后我在ELSE语句中提出。谢谢你,雷内,这是我需要的,因为如果有另一个错误属于同一个ORA-31011,我应该提出,然后在ELSE语句中提出。