oracle 数据库数据类型和PL/SQL数据类型

数据类型

   1.常用数据类型

     (1)CHAR(N)=CHAR(N BYTE)
      定义固定长度的字符串(以字节为单位),最大长度2000字节,如果没有指定N,其默认值为1.假设column1列定义为char(100),那么该列最多可以存储100个字节的字符串,并且占用空间固定。
      (2)CHAR(N CHAR)
      定义固定长度的字符串(以字符个数为单位)。假设column1列定义为char(100 char),那么该列最多可以存储100个字符(单字节或多字节)。如果存放的全部是汉字,则占用空间最多为200个字节;
      如果存放的全部是英文字符,则占用空间最多为100个字节。
     (3)VARCHAR2(N)=VARCHAR2(N BYTE)
      定义变长字符串(以字节为单位),其最大长度为4000字节,N必须指定长度。假设column1列定义为varchar2(100),则该列最多可以存储长度为100个字节的字符串,并且占用空间是变化的。
     (4)VARCHAR2(N CHAR)
      定义可变长字符串(以字符个数为单位)。假设column1列定义为varchar2(100 char),那么该列最多可以存储100个字符(单字节或多字节)。如果存放的全部是汉字,则占用空间最多为200个字节;
      如果存放的全部是英文字符,则占用空间最多为100个字节。
     (5)NUMBER(P,S)
      定义数字类型的数据,P表示数字的总位数(最大字节个数),而S表示小数点后面的位数。假设column1列定义为NUMBER(6,2),则整数最大位数为4位,而小数最大位数为2位。
     (6)INT
      定义整数类型数字,是NUMBER的子类型。
     (7)DATE
      定义日期时间数据,长度为7个字节。默认显示格式为(DD-MON-YY)。
     (8)TIMESTAMP
      定义日期和时间数据,是DATE数据类型的扩展。默认显示格式为(DD-MON-YY HH.MI.SS AM)。
     (9)RAW(N)
      定义二进制数据,N的上限值为2000。
     (10)LONG、LONG RAW
      早期Oracle版本(6和7)中,存储大量字符数据类型(LONG)、存储大量二进制数据类型(LONG RAW),最大长度2G,数据存放在表段中,SELECT直接返回数据,列数据顺序访问。
     (11)CLOB、BLOB
      Oracle8版本开始,存储大量字符数据类型(CLOB)、存储大量二级制数据类型(BLOB),最大长度4G,数据小于4000字节时,存放在表段中,大于4000字节时存放到LOB段,SELECT返回定位符,列数据可以随机访问。
     (12)BINARY_FLOAT、BINARY_DOUBLE
      Oracle10g新增加的数据类型,分别用于定义单精度浮点数和双精度浮点数,并且这两种数据类型主要用于高速的科学计算。定义BINARY_FLOAT需要带有后缀f(如:1.5f),定义BINARY_DOUBLE需要带有后缀d(如:3.00095d)。

   2.PL/SQL定义变量

     2.1 语法

         identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr]
         * identifier:变量或常量的名称。
         * CONSTANT:用于指定常量。
         * datatype:用于指定变量或常量的数据类型。
         * NOT NULL:用于强制初始化变量(不能为NULL)。当指定NOT NULL 选项时,必须为变量提供数值。
         * :=:用于为变量和常量指定初始值。
         * DEFAULT:用于为变量和常量指定初始值。
         * expr:指定初始值的PL/SQL表达式,可以是文本值、其他变量、函数等。

     2.2 使用示例

         v_ename    VARCHAR2(10);
         v_sal      NUMBER(6,2);
         v_balance  BINARY_FLOAT;
         c_tax_rate CONSTANT NUMBER(3,2):=5.5;
         v_hiredate DATE;
         v_valid    BOOLEAN  NOT NULL DEFAULT FALSE;
         注意:如果在定义变量时没有指定初始值,那么变量初始为NULL.

     2.3 %TYPE属性

         该属性用于按照数据库列或其他变量定义变量。
         如:v_ename emp.ename%TYPE; v_tax_ename v_ename%TYPE;

   3.PL/SQL复合变量

     复合变量是指用于存放多个值得变量。包括:PL/SQL记录表、PL/SQL表、嵌套表以及VARRAY等四种复合数据类型(Composite);

     3.1 PL/SQL记录

         类似高级语言中的结构,用于处理单行多列数据。既可以自定义记录类型和记录变量,也可以使用%ROWTYPE属性直接定义记录变量。
         3.1.1 语法
               TYPE type_name IS RECORD(
                   field_declaration[,field_declaration,...]
               );
               identifier type_name;
               其中:type_name用于指定自定义记录类型的名称。
         3.1.2 使用示例

               (1)自定义PL/SQL记录类型和记录变量

                

               (2)使用%ROWTYPE属性定义记录变量

                  %ROWTYPE属性可以基于表或视图定义记录变量。

                 

     3.2 PL/SQL表

         也称为索引表,类似于高级语言中的一维数组,用于处理多行单列数据。PL/SQL表的元素个数没有限制,而且下标可以为负值。
         3.2.1 语法
               TYPE type_name IS TABLE OF element_type
                 [NOT NULL] INDEX OF BINARY_INTEGER;
               identifier type_name;
         3.2.2 使用示例

               (1)使用PL/SQL表处理单行单列数据

               

               (2)使用PL/SQL表处理单列多行数据

                  从Oracle9i开始,通过使用SELECT BULK COLLECT INTO 语句,将多行数据检索到PL/SQL表变量。从下标1开始计数,通过使用COUNT方法获取元素的总个数。

               

     3.3 PL/SQL记录表

         类似高级语言的多维数组,可以处理多行多列的数据。
         3.3.1 语法
               TYPE type_name IS TABLE OF record_type
                 [NOT NULL] INDEX OF BINARY_INTEGER;
               identifier type_name;
               其中:record_type可以是自定义的PL/SQL记录,也可以是%ROWTYPE定义的行类型。
         3.3.2 使用示例

               (1)使用自定义PL/SQL记录定义记录表

                

               (2)使用%ROWTYPE属性定义记录表

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值