How to convert to number from boolean in plsql?
You need to use sys.diutil.bool_to_int
to convert a boolean to a number. See below demo.
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;
Output:
anonymous block completed
In your case it becomes like:
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;