假设我BOOLEAN在Oracle表单中的PL/SQL块中有一个变量:
DECLARE
is_viewable BOOLEAN;
BEGIN
is_viewable := ...;
IF NOT is_viewable THEN
raise_my_error(); // pseudo-code
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
在使用调试器多次单步执行此代码后,我确定raise_my_error() 永远不会被调用.澄清:
raise_my_error()如果没有被调用is_viewable = TRUEraise_my_error()如果没有被调用is_viewable = FALSE初步测试表明,此行为仅限于在Oracle Forms中运行的PL/SQL代码,而不是直接在数据库中运行的PL/SQL代码(尽管我可能错了).
我可以通过明确地比较is_viewable来解决这个问题FALSE:
IF is_viewable = FALSE THEN
raise_my_error();
END IF;
Run Code Online (Sandbox Code Playgroud)
我仍然很好奇为什么NOT is_viewable永远不会评估TRUE.
更新:我的调试器似乎没有显示正确的值,并且此问题不再有效.抱歉这个混乱.