我有一个布尔值,并尝试在plsql中将其转换为数字。
PROCEDURE Test(
contract_ IN VARCHAR2,
mch_code_ IN BOOLEAN)
IS
val_ NUMBER;
BEGIN
val_ := mch_code_.to_number();
...some code
END Test;
这不起作用吗?
如何从plsql中的布尔值转换为数字?
答案 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;