Xml PL-SQL:捕获特定错误
我有一个存储过程,其中在涉及xml字符串的变量赋值中,可能出现以下错误: SQL错误:ORA-31011:XML分析失败 ORA-19202:XML处理中发生错误 LPX-00242:符号与(“&”)字符的使用无效(使用“&”) 我将赋值包含在一个begin异常块中,在该块中声明了错误-19202,但它不起作用。捕获-31011错误是有效的,只是想知道是否有方法捕获LPX-00242,因为它是一个解析大量xml消息的过程,抛出少量错误(大多数xml消息都可以),要求特定于包含“&”的消息,因此,我只需要捕获并清理这些消息,以避免使过程过载,现在已经有点慢了 据我所知,-31011错误的发生可能有很多原因,不仅仅是因为&字符 提前谢谢 编辑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消息都可以),要求特定于包含“&”的消息,因此,
在异常处理程序中,您可以在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语句中提出。