Oracle 如何在PL/SQL中将布尔值转换为数字?
我有一个布尔值,我试图将它转换为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_
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不支持布尔值