假设我在Oracle表单中的PL/SQL块中有一个BOOLEAN
变量:
DECLARE
is_viewable BOOLEAN;
BEGIN
is_viewable := ...;
IF NOT is_viewable THEN
raise_my_error(); // pseudo-code
END IF;
END;
通过使用调试器逐步执行代码,我确定raise_my_error()
从来没有被调用。为了澄清:
raise_my_error()
不会被调用,如果is_viewable = TRUE
raise_my_error()
不会被调用,如果is_viewable = FALSE
初始测试表明,这种行为仅限于在Oracle Forms内运行的PL/SQL代码,而不是直接在数据库内运行的PL/SQL代码(尽管我可能错了)。
我可以通过将is_viewable
与FALSE
进行显式比较来避免这种情况:
IF is_viewable = FALSE THEN
raise_my_error();
END IF;
我仍然好奇为什么NOT is_viewable
从未计算为TRUE
。
更新:看起来我的调试器没有显示正确的值,这个问题已经无效了。对此混淆感到抱歉。
NOT is_viewable
总是会评估为FALSE
(无论is_viewable
的值如何),而is_viewable = FALSE
将根据is_viewable
的值评估为TRUE
或FALSE
。由于问题已经停止发生,我无法验证任何答案。 :( - Adam Paynter