假设我有一个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
初步试验表明,这种行为被限制在PL/SQL代码的运行叫在Oracle Forms中,而不是在数据库中直接运行PL/SQL代码(尽管我可能是错的)。
我可以明确地比较is_viewable
到FALSE
解决这个问题:
IF is_viewable = FALSE THEN
raise_my_error();
END IF;
我仍然好奇,为什么NOT is_viewable
从不计算TRUE
。
更新:看来我的调试器没有显示正确的值,并且此问题不再有效。对于这种困惑感到抱歉。
[友情提示]因为你是有经验的用户,我想你只是忘了接受一个答案(dcp's或Jeffrey's)。 –
@AlexanderMalakhov:我有几次想接受一个答案,但是现在问题似乎是无法回答的,因为代码似乎运行正常。除非我误解了,否则答案都不能解释为什么NOT_viewable'总是**评估为FALSE(不管is_viewable的值如何),而is_viewable = FALSE将评估为TRUE或' FALSE',取决于'is_viewable'的值。由于问题停止发生,我无法验证任何答案。 :( –
了解。我有类似的(“没有正确答案,无法验证”)[question](http://stackoverflow.com/questions/2233856/oracle-forms-6i-crashes-with-0xc0000005-at因为其他人永远不会回答我的Q,所以我决定接受*最有用的*(而不是正确的)回答。他的时间和努力,对于我的问题没有在悬而未决的问题列表中悬而未决,虽然很清楚,我完全没有问题,不跟随我的策略的人(更重要的是,你显然为SO社区做了很棒的工作) –