有限制的子类型拥有它的基类型的值的子集。
如果基类型允许设置size、precision、scale、range,则可以将这些指定给子类型。
|
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博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1104106/ ,如需转载,请注明出处,否则将追究法律责任。