首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL插入失败而不在PL/SQL中引发异常

问SQL插入失败而不在PL/SQL中引发异常
EN

Stack Overflow用户
提问于 2010-12-01 04:45:40
回答 3查看 3.4K关注 0票数 3

是否存在这样的情况: SQL (特别是Oracle-PL/SQL)中的INSERT可能会失败而不抛出异常?我在INSERT之后的代码中看到了检查,它验证SQL%ROWCOUNT = 1 ELSE,它引发了自己的用户定义的异常。我不明白这怎么可能发生。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-01 04:53:51

不能在没有异常的情况下,不。可能编写代码的开发人员并不知道这一点。

可以想象,after语句触发器可以删除刚刚插入的行。当然,INSERT...SELECT可能没有找到要插入的行,因此会导致SQL%ROWCOUNT = 0。

票数 8
EN

Stack Overflow用户

发布于 2010-12-01 04:53:31

除了提到的基于触发器的问题@mcabral之外,您可能有一个成功的insert,但插入的不是1行。例如,插入的insert into blah(col1) select col2 from foo样式。

票数 2
EN

Stack Overflow用户

发布于 2010-12-01 06:11:11

正如@TonyAndrews和@GinoA提到的,INSERT可以通过多种方式返回除一行以外的其他内容(触发器,INSERT INTO tablename SELECT...语法)。

但更大的问题是您使用的是PL/SQL。这样,可以将SQL%ROWCOUNT值用作确定包括发出COMMIT或ROLLBACK语句的程序执行流的条件。

即使只引发用户定义的异常,调用PL/SQL块也可以自己处理异常。

编辑:有人应该修改问题标题以指示PL/SQL (如问题本身所示),因为这与标题建议的SQL作用域不是一回事。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4318417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档