PL/SQL

PL/SQL 知识量:16 - 57 - 244

10.1 数据类型><

PL/SQL数据类型分类- 10.1.1 -

在 PL/SQL 中,可以使用多种数据类型来声明变量和存储数据。下面是一些常见的 PL/SQL 数据类型:

1、标量数据类型:

  • NUMBER:用于存储数字类型的数据。可以表示整数、浮点数等。

  • VARCHAR2:用于存储可变长度的字符串。指定一个最大长度,实际存储的字符串长度可以小于该最大长度。

  • CHAR:用于存储固定长度的字符串。必须指定字符串的确切长度。

  • DATE:用于存储日期和时间数据。可以表示年、月、日、小时、分钟和秒。

  • BOOLEAN:用于存储布尔值,即 TRUE 或 FALSE。

2、复合数据类型:

  • TABLE:用于存储表类型的数据。可以定义表的结构,包括列名和数据类型。

  • RECORD:用于存储记录类型的数据。可以包含多个字段,每个字段都有一个名称和数据类型。

  • ARRAY:用于存储数组类型的数据。可以包含一个固定大小的元素集合,所有元素都具有相同的数据类型。

3、引用数据类型:

  • %TYPE:用于声明一个变量,其数据类型与另一个变量的数据类型相同。

  • %ROWTYPE:用于声明一个变量,其数据类型与表中的一行数据类型相同。

以上只是 PL/SQL 中一些常用的数据类型示例。实际上,PL/SQL 还提供了其他更具体的数据类型,如 BINARY_INTEGER、PLS_INTEGER、SIMPLE_INTEGER 等。可以根据具体的需求选择适当的数据类型来声明变量或存储数据。

标量类型- 10.1.2 -

标量类型(scalar types)是最基本的数据类型,它们只能存储单个值,而不是复合的数据结构。下面是一些常见的 PL/SQL 标量数据类型:

1、NUMBER:

  • 用于存储数字类型的数据。

  • 可以表示整数、浮点数等。

  • 在声明变量时,可以指定精度(precision)和刻度(scale)来限制数值的范围和精度。例如:NUMBER(5, 2) 表示可以存储最大为 999.99 的数值,其中整数部分最多为 3 位,小数部分最多为 2 位。

2、VARCHAR2:

  • 用于存储可变长度的字符串。

  • 必须指定一个最大长度,实际存储的字符串长度可以小于该最大长度。

  • 例如:VARCHAR2(10) 表示可以存储最大长度为 10 的字符串。

3、CHAR:

  • 用于存储固定长度的字符串。

  • 必须指定字符串的确切长度。

  • 如果声明的长度大于实际存储的字符串长度,PL/SQL 会用空格填充到指定长度。

4、DATE:

  • 用于存储日期和时间数据。

  • 可以表示年、月、日、小时、分钟和秒。

  • 在 PL/SQL 中,DATE 类型包含了时间和时区信息。可以使用日期函数和操作符对日期进行操作。

5、TIMESTAMP:

  • 类型用于存储日期和时间信息。

  • 与 DATE 类型相比,TIMESTAMP 类型包含更精确的时间信息,包括年、月、日、小时、分钟、秒和时区。

6、BOOLEAN:

  • 用于存储布尔值,即 TRUE 或 FALSE。

  • 在 PL/SQL 中,BOOLEAN 类型是从 Oracle 12c 版本开始引入的。

7、FLOAT:

  • 用于存储浮点数值的数据类型。

  • 可以表示带有小数部分的数值。

  • FLOAT 类型可以存储的范围比 NUMBER 类型更广,但精度较低。它适用于存储非常大或非常小的数值,但不适合需要高精度计算的数值。

8、DOUBLE:

  • 用于存储双精度浮点数。

  • 可以存储比 FLOAT 类型更大范围的数值,同时具有更高的精度。

以上这些标量类型可以用于声明变量、函数参数、返回类型等。

复合类型- 10.1.3 -

复合类型(Composite Types)是一种用于存储多个值的数据结构,类似于其他编程语言中的数组或结构。

复合类型包括:

1、记录(Record):记录是一种复合类型,可以存储多个不同类型的数据。它类似于其他语言中的结构(Structure)或记录(Record)。记录由多个字段(Fields)组成,每个字段都有一个名称和数据类型。

例如:

TYPE employee_record IS RECORD (  
  employee_id   NUMBER,  
  first_name    VARCHAR2(50),  
  last_name     VARCHAR2(50),  
  hire_date     DATE  
);

2、表(Table):表是另一种复合类型,用于存储多个相同类型的数据。它类似于其他语言中的数组。表由多个元素(Elements)组成,每个元素的数据类型相同。例如:

TYPE number_table IS TABLE OF NUMBER INDEX BY PLS_INTEGER;

3、变体(Variant):变体是一种特殊类型的复合类型,可以存储不同类型的数据。变体由两个部分组成:基类型和一组可选的变体类型。基类型是必须存在的类型,而变体类型是可选的,并且可以有多个。例如:

TYPE variant_type IS VARIANT OF NUMBER OR VARCHAR2(50);

使用复合类型可以在 PL/SQL 中创建更复杂的数据结构,方便存储和操作多个相关的数据。记录、表和变体都可以作为变量、函数参数和函数返回值的数据类型。