Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何在PL/SQL中将布尔值转换为数字?_Oracle_Plsql - Fatal编程技术网

Oracle 如何在PL/SQL中将布尔值转换为数字?

Oracle 如何在PL/SQL中将布尔值转换为数字?,oracle,plsql,Oracle,Plsql,我有一个布尔值,我试图将它转换为PL/SQL中的数字 PROCEDURE Test( contract_ IN VARCHAR2, mch_code_ IN BOOLEAN) IS val_ NUMBER; BEGIN val_ := mch_code_.to_number(); ...some code END Test; 这是行不通的 如何在PL/SQL中从布尔值转换为数字?您需要一个案例: create PROCEDURE Test( contract_

我有一个布尔值,我试图将它转换为PL/SQL中的数字

PROCEDURE Test(
   contract_ IN VARCHAR2,
   mch_code_ IN BOOLEAN)   
IS
  val_ NUMBER;
BEGIN
  val_ := mch_code_.to_number();
...some code
END Test;
这是行不通的


如何在PL/SQL中从布尔值转换为数字?

您需要一个
案例:

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;
如何在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;

可能重复:我们真的需要使用这个功能吗?案例是更好的选择,对吗?@Gaj这已经被马分享了。我不能发布重复的答案。:-)实际上,
case
应该保留
NULL
并且不假设NULL为FALSE:
case when mch_code\uuu1 when not mch_code\uu0 end
Hi,我在select中尝试了此代码。但无法工作:)。为什么plsql不能支持布尔值?@Oğuz:PL/SQL支持布尔值,但Oracle的SQL不支持布尔值