PL/SQL如何输出布尔型

来源:互联网 发布:ubuntu root密码设置 编辑:程序博客网 时间:2024/06/05 06:37
PL/SQL如何输出布尔型

转自:http://blog.csdn.net/leshami/article/details/7549813

布尔类型是PL/SQL数据类型的一种,能存储逻辑值TRUE、FALSE。只有逻辑操作符才允许应用在布尔变量上。
数据库 SQL 并不支持布尔类型,只有PL/SQL才支持。
所以不能往数据库中插入或从数据库中检索出布尔类型的值。下面描述了布尔型的声明、赋值以及如何输出布尔型。


1、布尔型的声明与赋值  

   PL/SQL提供的两个表示布尔值的直接量为TRUE和FALSE。这些值不是字符串,我们也不用加引号。 
   可以直接用布尔直接量给布尔类型变量赋值。  
    
--声明与赋值示例    
    
DECLARE  
  is_boolean  BOOLEAN;         -- 声明一个布尔类型变量   
BEGIN  
   is_boolean :=FALSE;         -- 给这个变量赋值   
END;  
 
--缺省情况下,布尔型的默认值为false   
DECLARE  
  v_boolean   BOOLEAN; 
BEGIN  
   IF v_boolean THEN 
     DBMS_OUTPUT.put_line( 'true' );  
   ELSE  
     DBMS_OUTPUT.put_line( 'false' );  
   END IF; 
END;  

false  
 
PL/SQL procedure successfully completed.  
 
只有TRUE、FALSE 和NULL 才可以赋给布尔类型的变量。  
当表达式中使用关系操作符的时候,返回结果也是布尔类型的值,如下面的示例:  
         
v_flag := (count > 200);  
 
 
2、如何输出布尔型  

--下面的例子是一个使用put_line函数输出的情形  

SQL> DECLARE  
    v_bool   BOOLEAN; 
  BEGIN 
    v_bool := TRUE;  
    DBMS_OUTPUT.put_line( 'The value if v_bool is ' || v_bool ); 
  END; 
  /  

DBMS_OUTPUT.put_line( 'The value if v_bool is ' || v_bool ); 
*  
ERROR at line 5:  
ORA-06550: line 5, column 26:  
PLS-00306: wrong number or types of arguments in call to '||' 
ORA-06550: line 5, column 4:  
PL/SQL: Statement ignored  

--上面在输出布尔型的时候收到了错误提示PLS-00306  
--在这个地方需要注意的是使用PUT_LINE函数,由于dbms_output函数的参数本身并不支持boolean型,因此给出了错误提示  
--下面是PUT_LINE函数参数的描述   

SQL> desc dbms_output  

PROCEDURE PUT_LINE  
 ArgumentName                 Type                   In/Out Default?  
 ----------------------------------------------------- ------ --------  
                             VARCHAR2               IN  
   
可以通过调用dbms_sqltcb_internal包中i_convert_from_boolean函数来实现,调用时应具有相应的权限。 

 SQL> DECLARE 
    v_bool BOOLEAN;  
  BEGIN 
    v_bool := TRUE;  
  DBMS_OUTPUT.put_line('Firstly, v_bool is ' ||sys.dbms_sqltcb_internal.i_convert_from_boolean(v_bool)); 
    v_bool := FALSE;  
  DBMS_OUTPUT.put_line( 'Next, v_bool is ' ||sys.dbms_sqltcb_internal.i_convert_from_boolean(v_bool)); 
  END; 
  /  
 
Firstly, v_bool is TRUE  
Next , v_bool is FALSE  
 
PL/SQL procedure successfully completed.  
 
 
也通过函数来返回布尔型  

FUNCTION bool2char(bool IN boolean) RETURN varchar2IS   
  BEGIN  
    IF bool THENRETURN 'TRUE';  
    ELSIF NOTbool THEN RETURN 'FALSE';  
    ELSE RETURN'NULL';
    END IF; 
  END;  
 
SQL> DECLARE  
    v_bool BOOLEAN;  
   
    FUNCTION bool2char( bool IN BOOLEAN )  
       RETURN VARCHAR2 IS  
    BEGIN  
       IF bool THEN  
          RETURN 'TRUE';  
       ELSIF NOT bool THEN  
 10          RETURN 'FALSE';  
 11       ELSE  
 12          RETURN 'NULL';  
 13       END IF;  
 14    END;  
 15  BEGIN 
 16    v_bool := TRUE;  
 17    DBMS_OUTPUT.put_line( 'Firstly, v_bool is ' || bool2char( v_bool ));  
 18    v_bool := FALSE;  
 19    DBMS_OUTPUT.put_line( 'Next, v_bool is ' || bool2char( v_bool ) ); 
 20    v_bool := NULL;  
 21    DBMS_OUTPUT.put_line( 'Finally, v_bool is ' || bool2char( v_bool ));  
 22  END; 
 23  /  
 
Firstly, v_bool is TRUE  
Next, v_bool is FALSE  
Finally, v_bool is NULL  
 
PL/SQL procedure successfullycompleted.     

-->Author : Robinson Cheng  Blog:http://blog.csdn.net/robinson_0612 
0 0
原创粉丝点击