今天 PL/SQL 编程做了个大体的讲解  ORC数据类型总 结如下:
   
数据类型 含义
char 定长的字符型数据,最大长度可达2KB
nchar 存储Unicode字符集的定长字符型数据,最大长度为2KB
Varchar2 可变长的字符型数据,最大长度可达4000个字符
Nvarchar2 存储Unicode字符集的变长字符型数据,最大长度为4KB
number 存储整型或浮点型数据
Date 存储日期数据
Long 存储最大长度为2GB的变长字符数据
Raw 存储非结构化数据的变长字符数据,最长为2KB
Long Raw 存储非结构化数据的变长字符数据,最长为2GB
Rowid 存储表中列的物理地址的二进制数据,占用固定的10个字节
Blog 二进制大对象,最大长度为4GB
Clob 字符大对象,最大长度为4GB
Nclob 存储多达4GBUnicode字符数据
Bfile 把非结构化的二进制数据存储在数据库以外的操作系统文件中
Urowid 存储表示任何类型列地址的二进制数据
float 存储浮点数
一、概述
  标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,下面详细介绍它们的特性。
二、标量(SCALAR
  合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。它又分为七个组:数字、字符、行、日期、行标识、布尔和可信。
  数字,它有三种基本类型--NUMBERPLS_INTEGERBINARY_INTENERNUMBER可以描述整数或实数,而PLS_INTEGERBINARY_INTENER只能描述整数。
  NUMBER,是以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。它的定义方式是NUMBERPS),P是精度,最大38位,S是刻度范围,可在-84...127间取值。例如:NUMBER52)可以用来存储表示-999.99间的数值。PS可以在定义是省略,例如:NUMBER5)、NUMBER等;
  BINARY_INTENER用来描述不存储在数据库中,但是需要用来计算的带符号的整数值。它以2的补码二进制形式表述。循环计数器经常使用这种类型。
  PLS_INTEGERBINARY_INTENER唯一区别是在计算当中发生溢出时,BINARY_INTENER型的变量会被自动指派给一个NUMBER型而不会出错,PLS_INTEGER型的变量将会发生错误。
  字符,包括CHARVARCHAR2VARCHAR)、LONGNCHARNVARCHAR2几种类型。
  CHAR,描述定长的字符串,如果实际值不够定义的长度,系统将以空格填充。它的声明方式如下CHARL),L为字符串长度,缺省为1,作为变量最大32767个字符,作为数据存储在ORACLE8中最大为2000
  VARCHAR2VARCHAR),描述变长字符串。它的声明方式如下VARCHAR2unicode字符的种类有L),L为字符串长度,没有缺省值,作为变量最大32767个字节,作为数据存储在ORACLE8中最大为4000。在多字节语言环境中,实际存储的字符个数可能小于L值,例如:当语言环境为中文(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)时,一个VARCHAR2200)的数据列可以保存200个英文字符或者100个汉字字符。
  LONG,在数据库存储中可以用来保存高达2G的数据,作为变量,可以表示一个最大长度为32760字节的可变字符串。
  NCHARNVARCHAR2,国家字符集,与环境变量NLS指定的语言集密切相关,使用方法和CHARVARCHAR2相同。
  行,包括RAWLONG RAW两种类型。用来存储二进制数据,不会在字符集间转换。
  RAW,类似于CHAR,声明方式RAWL),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。
  LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节。
  日期,只有一种类型--DATE,用来存储时间信息,
站用7个字节(从世纪到秒),绝对没有千年虫问题。
  行标识,只有一种类型--ROWID,用来存储行标识符,可以利用ROWIDTOCHAR函数来将行标识转换成为字符。
  布尔,只有一种类型--BOOLEAN,仅仅可以表示TRUEFALSE或者NULL
  可信,只有一种类型--MLSLABEL,可以在TRUSTED ORACLE中用来保存可变长度的二进制标签。在标准ORACLE中,只能存储NULL值。
三、复合(COMPOSITE
  标量类型是经过预定义的,利用这些类型可以衍生出一些复合类型。主要有记录、表。
  记录,可以看作是一组标量的组合结构,它的声明方式如下:
  TYPE record_type_name IS RECORD
  ( filed1 type1 [NOT NULL] [=eXPr1]
  .......
  filedn typen [NOT NULL] [=exprn]
  其中,record_type_name是记录类型的名字。(是不是看着象CREATE TABLE......)引用时必须定义相关的变量,记录只是TYPE,不是VARIABLE
  表,不是物理存储数据的表,在这里是一种变量类型,也称为PL/SQL表,它类似于C语言中的数组,在处理方式上也相似。它的声明方式如下:
  TYPE table_type_name IS TABLE OF scalar_type INDEX BY BINARY_INTENER
  其中,table_type_name是类型的名字,scalar_type是一种标量类型的类型声明。引用时也必须定义相关的变量。表和数组不同,表有两列,KEYVALUEKEY就是定义时声明的BINARY_INTENERVALUE就是定义时声明的scalar_type
  除了记录和表之外,还有对象类型、集合(嵌套表和VARRAYS)等类型,这些将专门讲解。
四、引用(REFERENCE
  在PL/SQL8.0之前,只有一种类型--REF CURSOR,也就是游标。它的定义较为简单,
  CURSOR cursor_name IS select .....
  在PL/SQL8.0之后,引入了REF类型,它指向一个对象。这种类型将单独讲解。(等我弄明白再说,免得在高人面前......
  五、LOB
  LOB变量主要是用来存储大量数据的数据库字段,最大可以存储4G字节的内容(这么大,存VCD?,浪费!)。主要有:
  CLOB:和ORACLE7中的LONG类型相似,存储单字节字符数据。(别用来存中文喔。。。)
  NCLOB:用来存储定宽多字节字符数据。(例如:存《金瓶梅》就挺好)
  BLOB:和LONG RAW相似,用来存储无结构的二进制数据。
  BFILE:它用来允许ORACLE对数据库外存储的大型二进制文本进行只读形式的访问。
 
来源:(blog.sina/s/blog_606ffd540100dm3e.html) - ORCA 数据类型_zhangyue_新浪博客

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。