zoukankan      html  css  js  c++  java
  • ORACLE subtype 子类型

    定义子类型

    我们可以在任何PL/SQL块、子程序或包中定义自己的子类型,语法如下:

    SUBTYPE  subtype_name IS  base_type[(constraint)] [NOT  NULL ];

    subtype_name就是声明的子类型的名称,base_type可以是任何标量类型或用户定义类型,约束只是用于限定基类型的精度和数值范围,或是最大长度。下面举几个例子:

    DECLARE
      SUBTYPE  birthdate IS  DATE  NOT  NULL ;   -- based on DATE type

      SUBTYPE  counter IS  NATURAL ;   -- based on NATURAL subtype

      TYPE  namelist IS  TABLE  OF  VARCHAR2 (10);

      SUBTYPE  dutyroster IS  namelist;   -- based on TABLE type

      TYPE  timerec IS  RECORD (
        minutes   INTEGER ,
        hours     INTEGER
      );

      SUBTYPE  finishtime IS  timerec;   -- based on RECORD type

      SUBTYPE  id_num IS  emp.empno%TYPE ;   -- based on column type

    我们可以使用%TYPE或%ROWTYPE来指定基类型。当%TYPE提供数据库字段中的数据类型时,子类型继承字段的大小约束(如果有的话)。但是,子类型并不能继承其他约束,如NOT NULL。

    2、使用子类型

    一旦我们定义了子类型,我们就可以声明该类型的变量、常量等。下例中,我们声明了Counter类型变量,子类型的名称代表了变量的使用目的:

    DECLARE
      SUBTYPE  counter IS  NATURAL ;

      ROWS   counter;

    下面的例子演示了如何约束用户自定义子类型:

    DECLARE
      SUBTYPE  accumulator IS  NUMBER ;

      total   accumulator(7, 2);

    子类型还可以检查数值是否越界来提高可靠性。下例中我们把子类型Numeral的范围限制在-9到9之间。如果程序把这个范围之外的数值赋给Numeral类型变量,那么PL/SQL就会抛出一个异常。

    DECLARE
      SUBTYPE  numeral IS  NUMBER (1, 0);

      x_axis   numeral;   -- magnitude range is -9 .. 9
      y_axis   numeral;
    BEGIN
      x_axis    := 10;   -- raises VALUE_ERROR
      ...
    END ;

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ZengMuAnSha/archive/2010/03/30/5431728.aspx

  • 相关阅读:
    在SplendidCRM中添加用户控件
    SPendidCRM:给HK的ImageInfoEntryEditView增加一个checkbox,用于判断特殊类型的PODS记录
    html button 跳转ASP.NET页面跳转技术总结
    让<li>不显示超出内容,显示... (编程方法和CSS方法)
    SplendidCRM Popup.aspx的hyperlink字段配置的易错点
    asp.net 个别页面URL参数出现中文乱码的解决方法
    解决:工具箱里边没了Dev控件
    DevControlgridview的属性说明 (转)
    DevControlgridview的属性说明 (转)
    VM如何设置U盘启动
  • 原文地址:https://www.cnblogs.com/starliang/p/5729468.html
Copyright © 2011-2022 走看看