Oracle PL/SQL 第四章–数据类型
1、数值类型
序号 | 类型名称 | 说明 |
1 | PLS_INTEGER | 带符号整数:-2,147,483,648至2,147,483,647,以32位表示 |
2 | BINARY_INTEGER | 带符号整数:-2,147,483,648至2,147,483,647,以32位表示 |
3 | BINARY_FLOAT | 单精度IEEE 754格式浮点数 |
4 | BINARY_DOUBLE | 双精度IEEE 754格式浮点数NUMBER |
5 | NUMBER(prec, scale) | 在1E-130到(但不包括)1.0E126范围内的绝对值的定点或浮点数。NUMBER变量也可以表示0 |
6 | DEC(prec, scale) | ANSI特定定点类型,最大精度为38位十进制数字 |
7 | DECIMAL(prec, scale) | IBM具体定点类型,最大精度为38位十进制数字 |
8 | NUMERIC(pre, secale) | 浮点型,最大精度为38位十进制数 |
9 | DOUBLE PRECISION | ANSI特定浮点类型,最大精度为126位二进制数字(大约38位十进制数字) |
10 | FLOAT | ANSI和IBM特定浮点类型,最大精度为126位二进制数字(大约38 位十进制数字) |
11 | INT | ANSI特定整数类型,最大精度为38位十进制数 |
12 | INTEGER | ANSI和IBM特定整数类型,最大精度为38位十进制数 |
13 | SMALLINT | ANSI和IBM特定整数类型,最大精度为38位十进制数 |
14 | REAL | 浮点型,最大精度为63位二进制数字(约十八位数) |
以下的声明方式有效
DECLARE number1 INTEGER; number2 REAL; number3 DOUBLE PRECISION; BEGIN null; END;
2、字符类型
序号 | 类型名称 | 说明 |
1 | CHAR | 固定长度字符串,最大大小为32767字节 |
2 | VARCHAR2 | 最大大小为32767字节的可变长度字符串 |
3 | NCHAR | 固定长度的国家字符串,最大大小为32767字节 |
4 | NVARCHAR2 | 可变长度的国家字符串,最大大小为32767字节 |
5 | LONG | 最大长度为32760字节的可变长度字符串 |
5 | ROWID | 物理行标识符,普通表中的行的地址 |
3、布尔数据类型
BOOLEAN数据类型存储逻辑运算中使用的逻辑值。逻辑值为布尔值:TRUE,FALSE以及NULL值。
但是,SQL没有类似于BOOLEAN的数据类型。 因此,布尔值不能用于
- SQL语句
- 内置SQL函数(如:TO_CHAR)
- 从SQL语句调用PL/SQL函数
4、日期类型
DATE
数据类型用于存储固定长度的数据日期时间,其包括自午夜以来以秒为单位的时间。 有效期为公元前4712年1月1日至公元9999年12月31日。
每个DATE
类型的数据值包括世纪,年,月,日,时,分,秒。下表显示每个字段的有效值 :
序号 | 字段名 | 有效值 | 有效间隔值 |
1 | YEAR |
-4712 至9999 (不包括第0 年) |
任意非零整数 |
2 | MONTH |
01 ~ 12 |
01 ~ 11 |
3 | DAY |
01 至31 (限于MONTH 和YEAR 的值,根据本地日历的规则) |
任何非零整数 |
4 | HOUR |
00 ~ 23 |
00 ~ 23 |
5 | MINUTE |
00 ~ 59 |
00 ~ 59 |
6 | SECOND |
00 ~ 59.9(n) ,其中9(n) 是时间分秒的精度 |
00 ~ 59.9(n) ,其中9(n) 是时间分秒的精度 |
5、大对象(LOB)数据类型
大对象(LOB)数据类型指的是大数据项,如文本,图形图像,视频剪辑和声音波形。 LOB数据类型允许对数据进行高效,随机,分段访问。以下是预定义的PL/SQL LOB数据类型
序号 | 数据类型 | 描述 | 大小 |
1 | BFILE |
用于在数据库外的操作系统文件中存储大型二进制对象 | 取决于系统,但不得超过4GB |
2 | BLOB |
用于在数据库中存储的大型二进制对象 | 8TB 至128TB |
3 | CLOB |
用于在数据库中存储大字符数据 | 8TB 至128TB |
4 | NCLOB |
用于在数据库中存储大块NCHAR 数据 |
8TB 至128TB |
6、用户定义的子类型
子类型是另一种数据类型的子集,它称为基本类型。子类型具有与其基本类型相同的操作,但只有基本类型有效值的子集。
PL/SQL预定义包STANDARD
中的几个子类型。 例如,PL/SQL预先定义子类型CHARACTER
和INTEGER
,如下所示:
SUBTYPE CHARACTER IS CHAR; SUBTYPE INTEGER IS NUMBER(38,0);
可以定义和使用自己的子类型。以下程序说明了如何定义和使用用户定义的子类型
DECLARE SUBTYPE name IS char(20); SUBTYPE message IS varchar2(100); salutation name; greetings message; BEGIN salutation := 'Reader '; greetings := 'Welcome to the World of PL/SQL'; dbms_output.put_line('Hello ' || salutation || greetings); END; /