暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PL/SQL详解之数据类型

Oracle微学堂 2018-10-16
1605

概念

1

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

标量数据类型

2

标量数据类型的变量只有一个值,且内部没有分量。标量数据类型包括数字型,字符型,日期型和布尔型。这些类型有的是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相同。

属性数据类型

3

当声明一个变量的值是数据库中的一行或者是数据库中某列时,可以直接使用属性类型来声明。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;

 代码解析:

定义变量salemp表中sal列的类型。
定义totalsal是变量mysal的类型。

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

扫描二维码关注我的微学堂

搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!


最后修改时间:2019-12-20 16:32:38
文章转载自Oracle微学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论