Oracle PL/SQL 数据类型:布尔值、数字、日期 [示例]

什么是 PL/SQL 数据类型?

数据类型 在 PL/SQL 中用于定义如何存储、处理和处理数据 Oracle 在数据存储和处理过程中,数据类型与特定的存储格式和范围约束相关。 Oracle,每个值或常量都被赋予一种数据类型。

PL/SQL 和 SQL 数据类型是,SQL 数据类型仅限于表列,而 PL/SQL 数据类型用于 PL/SQL 块. 本教程后面会对此进行详细介绍。

以下是不同 Oracle PL/SQL 数据类型:

PL/SQL 数据类型
PL/SQL 中的不同数据类型

PL/SQL CHARACTER 数据类型

这种数据类型基本上以字符串格式存储字母数字字符。

将文字值分配给 CHARACTER 数据类型时,应始终用单引号引起来。

该字符数据类型进一步分类如下:

  • CHAR 数据类型(固定字符串大小)
  • VARCHAR2 数据类型(可变字符串大小)
  • VARCHAR 数据类型
  • NCHAR(本机固定字符串大小)
  • NVARCHAR2(本机变量字符串大小)
  • 长而长的生
数据类型 描述 句法
CHAR 该数据类型存储字符串值,字符串的大小在声明时是固定的 变量.

  • Oracle 如果变量没有占据声明的整个大小,则会用空白填充变量,因此 Oracle 即使变量没有完全占用内存,也会分配声明大小的内存。
  • 此数据类型的大小限制为 1-2000 字节。
  • CHAR 数据类型更适合用于处理固定大小的数据。
grade CHAR;
manager CHAR (10):= 'guru99';

语法解释:

  • 第一个声明语句声明 CHAR 数据类型的变量“grade”,最大大小为 1 字节(默认值)。
  • 第二条声明语句声明了CHAR数据类型的变量“manager”,最大大小为10,并赋予了99个字节的值“guru6”。 Oracle 在这种情况下将分配 10 字节而不是 6 字节的内存。
VARCHAR2 该数据类型存储字符串,但是字符串的长度不固定。

  • 此数据类型的大小限制为表列大小 1-4000 字节和变量 1-32767 字节。
  • 在声明变量时定义每个变量的大小。
  • 但是, Oracle 仅在定义变量后才会分配内存,即 Oracle 将仅考虑存储在变量中的字符串的实际长度以进行内存分配,而不是在声明部分为变量给出的大小。
  • 使用 VARCHAR2 而不是 CHAR 数据类型来优化内存使用总是好的。
manager VARCHAR2(10) := ‘guru99';

语法解释:

  • 上述声明语句声明了 VARCHAR2 数据类型的变量“manager”,最大大小为 10,并分配了 99 个字节的值“guru6”。 Oracle 在这种情况下将仅分配 6 个字节的内存。
变量 这与 VARCHAR2 数据类型同义。

  • 使用 VARCHAR2 而不是 VARCHAR 始终是一个好的做法,以避免行为改变。
manager VARCHAR(10) := ‘guru99';

语法解释:

  • 上述声明语句声明了 VARCHAR 数据类型的变量“manager”,最大大小为 10,并分配了 99 个字节的值“guru6”。 Oracle 在这种情况下将仅分配 6 个字节的内存。(类似于 VARCHAR2)
全国煤焦油储量调查 该数据类型与CHAR数据类型相同,但是字符集为国家字符集。

  • 可以使用 NLS_PARAMETERS 为会话定义此字符集。
  • 字符集可以是UTF16或UTF8。
  • 大小限制为 1-2000 字节。
native NCHAR(10);

语法解释:

  • 上述声明语句声明了 NCHAR 数据类型的变量“native”,最大大小为 10。
  • 该变量的长度取决于字符集中定义的每个字节的长度(数)。
NVARCHAR2 该数据类型与 VARCHAR2 数据类型相同,但字符集将是国家字符集。

  • 可以使用 NLS_PARAMETERS 为会话定义此字符集。
  • 字符集可以是UTF16或UTF8。
  • 大小限制为 1-4000 字节。
Native var NVARCHAR2(10):='guru99';

语法解释:

  • 上述声明语句声明了 NVARCHAR2 数据类型的变量“Native_var”,最大大小为 10。
LONG 和 LONGRAW 此数据类型用于存储大型文本或原始数据,最大大小为 2GB。

  • 这些主要用于数据字典。
  • LONG数据类型用于存储字符集数据,而LONG RAW用于存储二进制格式的数据。
  • LONG RAW 数据类型接受媒体对象、图像等,而 LONG 仅适用于可以使用字符集存储的数据。
Large_text LONG;
Large_raw LONG RAW;

语法解释:

  • 上述声明语句声明了 LONG 数据类型的变量“Large_text”和 LONG RAW 数据类型的变量“Large_raw”。

请注意: 不建议使用 LONG 数据类型 Oracle. 相反,应该优先使用 LOB 数据类型。

PL/SQL NUMBER 数据类型

此数据类型存储最高 38 位精度的定点数或浮点数。此数据类型用于处理仅包含数字数据的字段。变量可以声明为带有精度和小数位详细信息,也可以不声明这些信息。在为该数据类型赋值时,值不需要括在引号中。

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

语法解释:

  • 在上面的声明中,第一个声明声明变量“A”是数字数据类型,总精度为 8,小数位数为 2。
  • 第二个声明声明变量“B”是数字数据类型,总精度为 8 个且没有小数位。
  • 第三个声明是最通用的,声明变量“C”为数字数据类型,对精度或小数位没有限制。它最多可以容纳 38 位数字。

PL/SQL BOOLEAN 数据类型

此数据类型存储逻辑值。 Oracle 布尔数据类型表示 TRUE 或 FALSE,主要用于条件语句。为这种数据类型赋值时,值不需要括在引号中。

Var1 BOOLEAN;

语法解释:

  • 在上面的代码中,变量“Var1”被声明为 BOOLEAN 数据类型。根据设置的条件,代码的输出将是真或假。

PL/SQL DATE 数据类型

此数据类型以日期格式存储值,如日期、月份和年份。每当使用 DATE 数据类型定义变量时,它都可以保存时间信息,并且默认情况下,如果未指定,时间信息将设置为 12:00:00。在为这种数据类型分配值时,需要将值括在引号中。

标准 Oracle 输入和输出的时间格式是“DD-MON-YY”,并且在会话级别的 NLS_PARAMETERS (NLS_DATE_FORMAT) 再次设置。

newyear DATE:='01-JAN-2015';
current_date DATE:=SYSDATE;

语法解释:

  • 在上面的代码中,变量“newyear”被声明为 DATE 数据类型,并被赋予 1 月 XNUMX 日的值st,2015年日期。
  • 第二个声明将变量 current_date 声明为 DATE 数据类型,并将当前系统日期赋值。
  • 这两个变量都保存了时间信息。

PL/SQL LOB 数据类型

这种数据类型主要用于存储和操作大量非结构化数据,如图像、多媒体文件等。 Oracle 更喜欢 LOB 而不是 LONG 数据类型,因为它比 LONG 数据类型更灵活。以下是 LOB 相对于 LONG 数据类型的几个主要优势。

  • 表中具有 LONG 数据类型的列数限制为 1,而表对具有 LOB 数据类型的列数没有限制。
  • 数据接口工具在数据复制时接受表的 LOB 数据类型,但会忽略表的 LONG 列。这些 LONG 列需要手动复制。
  • LONG 列的大小为 2GB,而 LOB 最多可存储 128 TB。
  • Oracle 根据现代要求,在其每个版本中不断改进 LOB 数据类型,而 LONG 数据类型保持不变且没有得到太多更新。

因此,使用 LOB 数据类型而不是 LONG 数据类型总是好的。以下是不同的 LOB 数据类型。它们最多可以存储 128 TB 的大小。

  1. BLOB
  2. CLOB 和 NCLOB
  3. 档案
数据类型 描述 句法
BLOB 此数据类型以二进制文件格式存储 LOB 数据,最大大小为 128 TB。它不根据字符集详细信息存储数据,因此它可以存储非结构化数据,例如多媒体对象、图像等。
Binary_data BLOB;

语法解释:

  • 在上文中,变量“Binary_data”被声明为 BLOB。
CLOB 和 NCLOB CLOB 数据类型将 LOB 数据存储在字符集中,而 NCLOB 将数据存储在本机字符集中。由于这些数据类型使用基于字符集的存储,因此它们无法存储无法放入字符串的数据(如多媒体、图像等)。这些数据类型的最大大小为 128 TB。
Charac_data CLOB;

语法解释:

  • 在上文中,变量“Charac_data”被声明为 CLOB 数据类型。
档案
  • BFILE 是将非结构化二进制格式数据作为操作系统文件存储在数据库之外的数据类型。
  • BFILE的大小受操作系统限制,并且是只读文件,不可修改。

总结

我们已经介绍了 PL / SQL 以及它们的语法。我们将在后续主题中学习复杂数据类型。