PL/SQL允许定义自己的子类型,基类型可以是任何PL/SQL scalar类型,包含先定义的用户定义的子类型。
子类型可以:
n 提供对ANSI/ISO类型的兼容
n 显示该种类型的数据成员的预期用途(problem)
n 检测超范围的值
无限制的子类型与基类型具有的相同的值的集合,所以它只是基类型的另一个名称。因此同一基类型的各个无限制子类型以及基类型之间可以互相转换,且没有数据类型转换发生。
|
SUBTYPE 子类型名称 IS 基类型名称; |
PL/SQL中预定义的无限制的子类型的一个例子,是为了兼容ANSI而定义了:
|
SUBTYPE "DOUBLE PRECISION" IS FLOAT; |
|
--给正常类型一个别名,不是什么好习惯 DECLARE SUBTYPE Balance IS NUMBER;
checking_account Balance(6,2); savings_account Balance(8,2); certificate_of_deposit Balance(8,2); max_insured CONSTANT Balance(8,2) := 250000.00;
SUBTYPE Counter IS NATURAL;
accounts Counter := 1; deposits Counter := 0; withdrawals Counter := 0; overdrafts Counter := 0;
PROCEDURE deposit ( account IN OUT Balance, amount IN Balance ) IS BEGIN account := account + amount; deposits := deposits + 1; END; BEGIN NULL; END; |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1104105/ ,如需转载,请注明出处,否则将追究法律责任。