PL/SQL(三)数据类型

PL/SQL不但支持Oracle SQL的数据类型,还具备自身的数据类型。PL/SQL的数据类型包括标量数据类型,引用数据类型和存储文本、图像、视频、声音等非结构化的大数据类型(LOB数据类型)等。下面列举一些常用的类型。

※标量数据类型

 标量数据类型的变量只有一个值,且内部没有分量。标量数据类型包括数字型,字符型,日期型和布尔型。这些类型有的是Oracle SQL中定义的数据类型,有的是PL/SQL自身附加的数据类型。字符型和数字型又有子类型,子类型只与限定的范围有关,比如NUMBER类型可以表示整数,也可以表示小数,而其子类型POSITIVE只表示正整数。

类型 说明
VARCHAR2(长度)

可变长度字符串,Oracle SQL定义的数据类型,在PL/SQL中使用时最常32767字节。

在PL/SQL中使用没有默认长度,因此必须指定。

NUMBER(精度,小数) Oracle SQL定义的数据类型
DATE Oracle SQL定义的日期类型
TIMESTAMP Oracle SQL定义的日期类型
CHAR(长度)

Oracle SQL定义的日期类型,固定长度字符,最长32767字节,

默认长度是1,如果内容不够用空格代替。

LONG

Oracle SQL定义的数据类型,变长字符串基本类型,最长32760字节。

在Oracle SQL中最长2147483647字节。

BOOLEAN PL/SQL附加的数据类型,逻辑值为TRUE、FALSE、NULL
BINARY_INTEGER PL/SQL附加的数据类型,介于-231和231之间的整数。
PLS_INTEGER

PL/SQL附加的数据类型,介于-231和231之间的整数。

类似于BINARY_INTEGER,只是PLS_INTEGER值上的运行速度更快。

NATURAL PL/SQL附加的数据类型,BINARY_INTEGER子类型,表示从0开始的自然数。
NATURALN 与NATURAL一样,只是要求NATURALN类型变量值不能为NULL。
POSITIVE PL/SQL附加的数据类型,BINARY_INTEGER子类型,正整数。
POSITIVEN 与POSITIVE一样,只是要求POSITIVE的变量值不能为NULL。
REAL Oracle SQL定义的数据类型,18位精度的浮点数
INT,INTEGER,SMALLINT Oracle SQL定义的数据类型,NUMBERDE的子类型,38位精度整数。
SIGNTYPE PL/SQL附加的数据类型,BINARY_INTEGER子类型。值有:1、-1、0。
STRING 与VARCHAR2相同。

※属性数据类型

当声明一个变量的值是数据库中的一行或者是数据库中某列时,可以直接使用属性类型来声明。Oracle中存在两种属性类型:%TYPE和%ROWTYPE。

% ROWTYPE

引用数据库表中的一行作为数据类型,即RECORD类型(记录类型),是PL/SQL附加的数据类型。表示一条记录,就相当于C#中的一个对象。可以使用“.”来访问记录中的属性。

代码演示:

SQL> DECLARE 
2 myemp EMP%ROWTYPE; ① 
3 BEGIN 
4 SELECT * INTO myemp FROM emp WHERE empno=7934; ② 
5 dbms_output.put_line(myemp.ename); ③ 
6 END;

代码解析:

① 声明一个myemp对象,该对象表示EMP表中的一行。
② 从EMP表中查询一条记录放入myemp对象中。
③ 访问该对象的属性可以使用“.”。

%TYPE

引用某个变量或者数据库的列的类型作为某变量的数据类型。

代码演示:%TYPE应用

SQL> DECLARE 
2 sal emp.sal%TYPE; ① 
3 mysal number(4):=3000; 
4 totalsal mysal%TYPE; ② 
5 BEGIN 
6 SELECT SAL INTO sal FROM emp WHERE empno=7934; 
7 totalsal:=sal+mysal; 
8 dbms_output.put_line(totalsal); 
9 END;

 代码解析:

① 定义变量sal为emp表中sal列的类型。
② 定义totalsal是变量mysal的类型。

%TYPE可以引用表中的某列作的类型为变量的数据类型,也可以引用某变量的类型作为新变量的数据类型。

 

posted @ 2016-11-18 15:19  冯瑞  阅读(1386)  评论(0编辑  收藏  举报