ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Reference-PL/SQL数据类型-SQL数据类型-有限制的子类型

PLSQL Language Reference-PL/SQL数据类型-SQL数据类型-有限制的子类型

原创 Oracle 作者:luisedalian 时间:2014-03-09 17:24:32 0 删除 编辑

0.1.1 有限制的子类型

有限制的子类型拥有它的基类型的值的子集。

如果基类型允许设置sizeprecisionscalerange,则可以将这些指定给子类型。

SUBTYPE 子类型 IS 基类型

  { precision [, scale ] | RANGE 最小值 .. 最大值 } [ NOT NULL ]

除此之外,允许为子类型设置的唯一的约束就是NOT NULL

注意:唯一可以指定值域的基类型是PLS_INTEGER和它的子类型(预定义的和用户定义的)

--检测到超出范围的值

DECLARE

    SUBTYPE Balance IS NUMBER(8,2);

    checking_account  Balance;

    savings_account   Balance;

 

BEGIN

    checking_account := 2000.00;

    savings_account  := 1000000.00;

END;

受约束的子类型可以被隐式地转换为它的基类型,但基类型只能当它的值不违背子类型的约束时,才能被隐式地转换为子类型。

DECLARE

    SUBTYPE Digit        IS PLS_INTEGER RANGE 0..9;

    SUBTYPE Double_digit IS PLS_INTEGER RANGE 10..99;

    SUBTYPE Under_100    IS PLS_INTEGER RANGE 0..99;

 

    d   Digit        :=  4;

    dd  Double_digit := 35;

    u   Under_100;

BEGIN

    u := d;   -- 成功, Under_100的范围包括Digit

    u := dd;  -- 成功, Under_100的范围包括Double_digit

    dd := d;  -- 超范围了

END;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1104106/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    5675865