If 语句中的多个条件为真 (Nefted If)
Posted
技术标签:
【中文标题】If 语句中的多个条件为真 (Nefted If)【英文标题】:Multiple conditions are true in If statement (Nefted If) 【发布时间】:2021-07-06 06:05:35 【问题描述】:我有一个嵌套的 if 条件:
If (a > 0)
THEN
Delete from sample_table where id = 123;
IF (b > 0)
dummy = error_insert('x','y','The value of b is greater than 0',0);
commit;
Return;
END IF;
END IF;
所以我想检查变量 a 是否大于 0,如果是,则应从 sample_table 中删除该值,然后检查变量 b 的值是否大于 0 并插入上述值。
但它实际上是做什么检查a是否大于0并直接检查b是否大于0。它不执行delete语句。
【问题讨论】:
这很难相信。仅当 SAMPLE_TABLE 中没有 ID = 123 的行时,DELETE 才会执行任何操作。如果您不同意,请发布说明您在说什么的测试用例。 【参考方案1】:我没有看到完整的代码,所以我只能猜测。
代码没有按预期工作可能有两个原因。
首先也是最简单的,正如@littlefoot 所说,没有要删除的行。
这很容易检查,我相信您已经完成了检查,并且仍然想知道为什么记录仍然存在于数据库中。所以这是第二个猜测。
其次,它是代码中“提交”命令的位置。仅当 a > 0 和 b > 0 时,您拥有的程序才会提交。所以,我的猜测是在您的测试用例中“a”大于 0 并且“b”不大于 0 并且无法到达提交命令。
【讨论】:
以上是关于If 语句中的多个条件为真 (Nefted If)的主要内容,如果未能解决你的问题,请参考以下文章