动态SQL捕捉异常的问题

lvlvlvlylyly 2012-07-08 05:22:03
我在一个过程里面用到了execute immediate,因为后面的SQL是用输入参数生成的,所以想捕捉这个异常.
因此我故意输了一个错误的参数进去,结果发现,就卡在这句了,捕捉异常的RAISE语句在底下一行,根本就没有触发.

后来我发现,execute immediate执行动态SQL语句的时候,特别是INTO的时候,必须要有返回值,凡是没有返回值的时候,它都会卡在execute immediate本句.那请教怎么捕捉这里的异常呢?

SQL语句本身很简单,随便来一句都可以.select name from test where name='李四';

比如,没有'李四'这个人,也就是说没有返回值了,我本来是想把这句的结果给一个变量,然后判断那个变量是否为空,从而捕捉这个异常,

可问题是,如果没有返回值,在INTO的时候,直接就报错了!!根本不能往下走!

请高手解答,谢谢!
...全文
133 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvlvlvlylyly 2012-07-08
  • 打赏
  • 举报
回复
晕死,嵌套就可以了....这么多分,都给你顶我的了算了..
lvlvlvlylyly 2012-07-08
  • 打赏
  • 举报
回复
exception when NO_DATA_FOUND then
dbms_output.put_line('检查输入参数!!');

添加了NO_DATA_FOUND的异常处理之后,程序可以捕捉空返回的异常了,但我想把这个异常单独处理,因为底下还有许多NO_DATA_FOUND的异常,怎么把它分开呢?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧