oracle存储过程返回值boolean,Oracle存储过程的“布尔”参数

Oracle数据库中没有原生的布尔类型,通常使用NUMBER(1)来代替。在存储过程中,可以接受NUMBER类型作为布尔参数,但无法在SQL中直接使用布尔值。可以通过检查约束或验证代码来确保输入值为0或1。在PL/SQL中,可以使用IF条件判断处理布尔逻辑,但布尔值不适用于数据库列类型且无法在SQL查询中直接使用。可以通过创建自定义包和子类型来模拟布尔行为。
摘要由CSDN通过智能技术生成

我知道Oracle没有用于参数的布尔类型,并且当前正在接受NUMBER类型,该类型的True / False值将为1/0(而不是'Y'/'N'CHAR(1)) 方法)。

我不是一个非常高级的Oracle程序员,但是在做完一些挖掘和阅读一些ASKTOM帖子之后,似乎可以使用一种格式来限制字段,例如:

MyBool NUMBER(1) CHECK (MyBool IN (0,1))

有没有一种方法可以将相同类型的检查约束应用于存储过程的输入参数? 我想将可能的输入限制为0或1,而不是在收到输入后显式地检查它。

您可以将布尔值用作存储过程的参数:

procedure p (p_bool in boolean) is...

但是您不能在SQL中使用布尔值,例如 选择语句:

select my_function(TRUE) from dual; -- NOT allowed

对于数字参数,无法在其上声明性地添加"检查约束",您必须编写一些验证代码,例如

procedure p (p_num in number) is

begin

if p_num not in (0,1) then

raise_application_error(-20001,'p_num out of range');

end if;

...

嗨,托尼,请原谅我对布尔类型的无知。 我一定对我看到的评论有误读。 我以为Oracle不支持它,但是也许那只是针对字段类型。 只是仔细检查一下,以下是否适用于该类型,对吗? IF(p_bool)然

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值