oracle PL SQL正数子类型

时间:2019-06-13 10:52:43

标签: oracle plsql subtype

我想创建一个正数(6,2)子类型。 为此,我尝试了:

declare
    subtype st_positive_number is number(6, 0) > 0;
    v_positive_number positive(6, 2);
begin 
    null;
end;

,但以上尝试均无效。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

您需要用范围来约束子类型,并想将该子类型分配给变量,例如:

declare
    subtype st_positive_number is PLS_INTEGER RANGE 0..999999;
    v_positive_number st_positive_number;
begin 
    v_positive_number := 999999;
end;
/

答案 1 :(得分:1)

您将如何使用它?如果要创建一个表,该表的列仅接受正数,则创建一个检查约束,例如

SQL> create table test (id number constraint ch_pos check (id > 0))

Table created.

SQL> insert into test (id) values (100);

1 row created.

SQL> insert into test (id) values (-100);
insert into test (id) values (-100)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_POS) violated

如果这不是您想要的,请您进一步解释一下吗?