ORACLE Subtype

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-07 15:31:49
원래의
1444명이 탐색했습니다.

定义子类型 我们可以在任何PL/SQL块、子程序或包中定义自己的子类型,语法如下: SUBTYPE subtype_name IS base_type[(constraint)] [NOT NULL ]; subtype_name就是声明的子类型的名称,base_type可以是任何标量类型或用户定义类型,约束只是用于限定基类型

定义子类型

我们可以在任何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 ; 

 

http://blog.csdn.net/ZengMuAnSha/archive/2010/03/30/5431728.aspx

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿