Oracle PL/SQL 数据类型:布尔型、数字型、日期型 [示例]
什么是 PL/SQL 数据类型?
PL/SQL 中的数据类型用于定义数据在 Oracle 存储和处理期间的存储、处理和处理方式。数据类型与特定的存储格式和范围限制相关联。在 Oracle 中,每个值或常量都分配有一个数据类型。
PL/SQL 和 SQL 数据类型的主要区别在于,SQL 数据类型仅限于表列,而 PL/SQL 数据类型用于 PL/SQL 块。本教程稍后将对此进行详细介绍。
以下是不同 Oracle PL/SQL 数据类型的图示

PL/SQL 字符数据类型
此数据类型主要以字符串格式存储字母数字字符。
在为 CHARACTER 数据类型赋值时,字面值应始终用单引号括起来。
此字符数据类型进一步细分为以下几类
- CHAR 数据类型(固定字符串长度)
- VARCHAR2 数据类型(可变字符串长度)
- VARCHAR 数据类型
- NCHAR(本地固定字符串长度)
- NVARCHAR2(本地可变字符串长度)
- LONG 和 LONG RAW
数据类型 | 描述 | 语法 |
---|---|---|
CHAR | 此数据类型存储字符串值,字符串的长度在声明变量时固定。
|
grade CHAR; manager CHAR (10):= 'guru99'; 语法说明
|
VARCHAR2 | 此数据类型存储字符串,但字符串的长度不固定。
|
manager VARCHAR2(10) := ‘guru99'; 语法说明
|
VARCHAR | 这与 VARCHAR2 数据类型同义。
|
manager VARCHAR(10) := ‘guru99'; 语法说明
|
NCHAR | 此数据类型与 CHAR 数据类型相同,但字符集是国家字符集。
|
native NCHAR(10); 语法说明
|
NVARCHAR2 | 此数据类型与 VARCHAR2 数据类型相同,但字符集是国家字符集。
|
Native var NVARCHAR2(10):='guru99'; 语法说明
|
LONG 和 LONGRAW | 此数据类型用于存储高达 2GB 的大型文本或原始数据。
|
Large_text LONG; Large_raw LONG RAW; 语法说明
注意:Oracle 不建议使用 LONG 数据类型。应首选 LOB 数据类型。 |
PL/SQL 数字数据类型
此数据类型最多可存储 38 位精度的定点或浮点数。此数据类型用于处理只包含数字数据的字段。变量可以声明为包含精度和小数位数信息,也可以不包含这些信息。为该数据类型赋值时,值不必用引号括起来。
A NUMBER(8,2); B NUMBER(8); C NUMBER;
语法说明
- 在上例中,第一个声明将变量“A”声明为数字数据类型,总精度为 8,小数位数为 2。
- 第二个声明将变量“B”声明为数字数据类型,总精度为 8,没有小数位数。
- 第三个声明是最通用的,声明变量“C”为数字数据类型,对精度或小数位数没有限制。最多可接受 38 位数字。
PL/SQL 布尔数据类型
此数据类型存储逻辑值。Oracle 布尔数据类型表示 TRUE 或 FALSE,主要用于条件语句。为该数据类型赋值时,值不必用引号括起来。
Var1 BOOLEAN;
语法说明
- 在上例中,变量“Var1”被声明为 BOOLEAN 数据类型。根据设定的条件,代码的输出将是 true 或 false。
PL/SQL 日期数据类型
此数据类型以日期格式存储值,包括日期、月份和年份。当变量用 DATE 数据类型定义时,除了日期,它还可以保存时间信息,如果未指定,则默认时间信息设置为 12:00:00。为该数据类型赋值时,值需要用引号括起来。
标准的 Oracle 输入和输出时间格式为“DD-MON-YY”,它是在会话级别设置在 NLS_PARAMETERS (NLS_DATE_FORMAT) 中的。
newyear DATE:='01-JAN-2015'; current_date DATE:=SYSDATE;
语法说明
- 在上例中,变量“newyear”被声明为 DATE 数据类型,并赋值为 2015 年 1 月 1 日的日期。
- 第二个声明将变量 current_date 声明为 DATE 数据类型,并赋值为当前系统日期。
- 这两个变量都包含时间信息。
PL/SQL LOB 数据类型
此数据类型主要用于存储和操作大量非结构化数据,如图像、多媒体文件等。Oracle 倾向于使用 LOB 而不是 LONG 数据类型,因为它比 LONG 数据类型更灵活。以下是 LOB 相对于 LONG 数据类型的几个主要优点。
- 表中具有 LONG 数据类型的列数限制为 1,而表中具有 LOB 数据类型的列数没有限制。
- 数据接口工具在数据复制期间接受表中的 LOB 数据类型,但会忽略表中的 LONG 列。这些 LONG 列需要手动复制。
- LONG 列的大小为 2GB,而 LOB 可以存储高达 128TB。
- Oracle 在每个发行版中都在不断改进 LOB 数据类型以满足现代需求,而 LONG 数据类型则保持不变,更新不多。
因此,最好使用 LOB 数据类型而不是 LONG 数据类型。以下是不同的 LOB 数据类型。它们可以存储高达 128TB 的数据。
- BLOB
- CLOB 和 NCLOB
- BFILE
数据类型 | 描述 | 语法 |
---|---|---|
BLOB | 此数据类型以二进制文件格式存储 LOB 数据,最大尺寸为 128TB。它不基于字符集详细信息存储数据,因此可以存储非结构化数据,如多媒体对象、图像等。 |
Binary_data BLOB; 语法说明
|
CLOB 和 NCLOB | CLOB 数据类型将 LOB 数据存储到字符集中,而 NCLOB 将数据存储到本地字符集中。由于这些数据类型使用基于字符集的存储,因此它们无法存储多媒体、图像等无法放入字符字符串的数据。这些数据类型的最大尺寸为 128TB。 |
Charac_data CLOB; 语法说明
|
BFILE |
|
摘要
我们已经介绍了 PL/SQL 中可用的各种简单数据类型及其语法。我们将在后续主题中学习复杂数据类型。