问题描述
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语句。
解决方法
我没有看到完整的代码,所以我只能猜测。
代码没有按预期工作可能有两个原因。
首先也是最简单的,正如@littlefoot 提到的,没有要删除的行。
检查起来很容易,我相信您已经这样做了,但仍然想知道为什么数据库中仍然存在记录。所以这是第二个猜测。
其次,是代码中“commit”命令的位置。您拥有的程序仅在 a > 0 且 b > 0 时才会提交。因此,我的猜测是在您的测试用例中,“a”大于 0 且“b”不大于 0,并且无法到达提交命令。