当前位置:  数据库>oracle

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

    来源: 互联网  发布时间:2017-05-17

    本文导语: 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) TH...

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;


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口rowid的类成员方法: tostring定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间javax.sql.rowset接口joinrowset的类成员方法: getwhereclause定义及介绍
  • 如何处理此错误:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性
  • java命名空间java.sql接口statement的类成员方法: execute定义及介绍
  • sql2005 大数据量检索分页的sql代码
  • java命名空间java.sql接口resultset的类成员方法: getcursorname定义及介绍
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • java命名空间java.sql接口resultsetmetadata的类成员方法: getcolumntype定义及介绍
  • 微软网站下载的Ms SQL Server2000 JDBC Driver,必须用英文版的SQL server2000吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,