首頁 > 資料庫 > mysql教程 > PL/SQL的BOOLEAN的三个值:TRUE,FALSE,NULL

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

WBOY
發布: 2016-06-07 17:27:05
原創
1224 人瀏覽過

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板