热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

PL/SQL的BOOLEAN的三个值:TRUE,FALSE,NULL

Oracle的PLSQL中的BOOLEAN类型有三个取值,分别是TRUE、FALSE以及NULL。这三个值会给开发的时候造成不必要的麻烦。

Oracle的PL/SQL中的BOOLEAN类型有三个取值,分别是TRUE、FALSE以及NULL。这三个值会给开发的时候造成不必要的麻烦。

Oracle的PL/SQL中的BOOLEAN类型有三个取值,分别是TRUE、FALSE以及NULL。这三个值会给开发的时候造成不必要的麻烦,例如

DECLARE
B_FLAG_TRUE BOOLEAN := TRUE;
B_FLAG_FALSE BOOLEAN := FALSE;
B_FLAG_NULL BOOLEAN :=NULL;
BEGIN
IF (B_FLAG_NULL AND B_FLAG_TRUE) THEN
DBMS_OUTPUT.PUT_LINE('NULL AND TRUE');
END IF;
IF NOT (B_FLAG_NULL AND B_FLAG_TRUE) THEN
DBMS_OUTPUT.PUT_LINE('NOT (NULL AND TRUE)');
END IF;
END;

上面的两个判断,均没有输出字符,,因此,我们需要看一下问题出在什么地方:

DECLARE
B_FLAG_TRUE BOOLEAN := TRUE;
B_FLAG_FALSE BOOLEAN := FALSE;
B_FLAG_NULL BOOLEAN :=NULL;
B_FLAG_RESULT BOOLEAN;
FUNCTION TSBOOLEAN (B_FLAG BOOLEAN)RETURN VARCHAR2 IS
BEGIN
RETURN CASE B_FLAG
WHEN TRUE THEN 'TRUE'
WHEN FALSE THEN 'FALSE'
ELSE 'NULL'
END;
END TSBOOLEAN;
BEGIN
B_FLAG_RESULT :=(B_FLAG_NULL AND B_FLAG_TRUE) ;
DBMS_OUTPUT.PUT_LINE(TSBOOLEAN(B_FLAG_RESULT));
IF B_FLAG_RESULT THEN
DBMS_OUTPUT.PUT_LINE(''||'==>'||'');
END IF;
IF NOT B_FLAG_RESULT THEN
DBMS_OUTPUT.PUT_LINE(''||'==>'||'');
END IF;
END;

原来,上面的输出结果是NULL,所以有一个规范:“我们必须要预料到布尔表达式的结果会存在NULL值,因此必须使用NVL()函数来避免不可预料的结果的发生!”。根据实际的结果值进行如下操作:

DECLARE
B_FLAG_TRUE BOOLEAN := TRUE;
B_FLAG_FALSE BOOLEAN := FALSE;
B_FLAG_NULL BOOLEAN :=NULL;
B_FLAG_RESULT BOOLEAN;
BEGIN
B_FLAG_RESULT := (NVL(B_FLAG_NULL,FALSE) AND B_FLAG_TRUE);
IF (B_FLAG_RESULT) THEN
DBMS_OUTPUT.PUT_LINE('NULL AND TRUE');
END IF;
IF NOT B_FLAG_RESULT THEN
DBMS_OUTPUT.PUT_LINE('NOT (NULL AND TRUE)');
END IF;
END;

linux

推荐阅读
author-avatar
财气冲天6_757
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有