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)的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中的if条件判断语句

R语言中的if else语句

python中的if not 怎么用

4. 流程控制语句

Shell if 条件判断

Shell if 条件判断