如何为变量设置特定范围

How to set a specific range for a variable

我们知道这是声明变量的方法:

varname number(precision,scale);

但是我们如何指定这个变量只能有像from 1 to 13这样的特定值?

varname number(2,0) range 1..13 -- 但这是错误的,还是应该改用整数?

您可以声明限制在值范围内的自定义 PL/SQL 子类型,如下所示:

declare
    subtype small_int is pls_integer range 1..100;
    x small_int;
begin
    x := 10;       -- SUCCEEDS
    x := 110;      -- FAILS
end;

子类型必须具有基本类型 PLS_INTEGER 或其子类型之一(例如 NATURAL、NATURALN、POSITIVE、POSITIVEN、SIGNTYPE、SIMPLE_INTEGER)。

注意:这仅适用于PL/SQL。对于数据库列,您通常会拥有基于简单数据类型(例如 NUMBER)的列,并对列施加约束以确保值在允许的范围内。