如何在plsql中将布尔值转换为数字?

时间:2018-07-12 09:18:12

标签: oracle plsql

我有一个布尔值,并尝试在plsql中将其转换为数字。

PROCEDURE Test(
   contract_ IN VARCHAR2,
   mch_code_ IN BOOLEAN)   
IS
 val_ NUMBER;
BEGIN
  val_ := mch_code_.to_number();
...some code
END Test;

这不起作用吗?

如何从plsql中的布尔值转换为数字?

2 个答案:

答案 0 :(得分:5)

您需要一个case

create PROCEDURE Test(
   contract_ IN VARCHAR2,
   mch_code_ IN BOOLEAN)   
IS
 val_ NUMBER;
BEGIN
  val_ := case when mch_code_ then 1 else 0 end;
...some code
END Test;

答案 1 :(得分:2)

  

如何从plsql中的布尔值转换为数字?

您需要使用sys.diutil.bool_to_int将布尔值转换为数字。参见下面的演示。

DECLARE

  var BOOLEAN :=TRUE;
  var1 varchar2(10);
BEGIN 
  --Converting boolean to int here and checking.
  var1:=CASE WHEN (sys.diutil.bool_to_int(var)) = 1 THEN 'TRUE'
             WHEN (sys.diutil.bool_to_int(var)) = 0 THEN  'FALSE'
             END;  
    dbms_output.put_line(var1);
END;

输出:

anonymous block completed

在您的情况下,它变成:

PROCEDURE Test(
        contract_ IN VARCHAR2,
        mch_code_ IN BOOLEAN)
IS
    val_ NUMBER;
BEGIN
    val_ := sys.diutil.bool_to_int(mch_code_);
    ...SOME code
END Test;