我知道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)然