PL / SQL记录属性条件

时间:2016-12-07 13:53:58

标签: oracle plsql while-loop

我有以下记录

Cursor my_cursor Is Select y, x, z From table Order by y;
my_record my_cursor%rowtype;

知道记录x属性是null,我试图在while循环中检查它并获得以下结果:

While my_record.x != 'TXT' Loop // loop does not enter
While NVL(my_record.x, '') != 'TXT' Loop // loop does not enter
While NVL(my_record.x, ' ') != 'TXT' Loop // loop enters

我想知道为什么前2次尝试没有进入循环,知道在调试时,表达式的返回值是真的吗?

1 个答案:

答案 0 :(得分:3)

简短回答:因为

条件NULL != 'TXT'既不是真也不是假。这是未知的。

NVL(my_record.x, '')NULL,因此NVL(my_record.x, '') != 'TXT'的逻辑值也未知。

顺便说一下 - 偶数NULL不等于NULL

您可能需要阅读documentation

中的更多内容