Jay*_*y S 12 oracle parameters boolean
我知道Oracle没有用于参数的布尔类型,并且我目前正在使用NUMBER类型,其中1/0为True/False(而不是'Y'/'N'CHAR(1)方法).
我不是一个非常高级的Oracle程序员,但在做了一些挖掘和阅读一些ASKTOM帖子后,似乎你可以使用列的格式来限制字段,如:
MyBool NUMBER(1) CHECK (MyBool IN (0,1))
有没有办法将相同类型的检查约束应用于存储过程的输入参数?我想将可能的输入限制为0或1,而不是在收到输入后明确检查它.
Ton*_*ews 30
您可以使用布尔值作为存储过程的参数:
procedure p (p_bool in boolean) is...
Run Code Online (Sandbox Code Playgroud)
但是你不能在SQL中使用布尔值,例如select语句:
select my_function(TRUE) from dual; -- NOT allowed
Run Code Online (Sandbox Code Playgroud)
对于数字参数,无法以声明方式向其添加"检查约束",您必须编写一些验证,例如
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;
...
Run Code Online (Sandbox Code Playgroud)