1.字符型
用来存储字符串或字符数据,主要类型有VARCHAR2、CHAR和LONG。
(1)VARCHAR2
用来存储可变长的字符串或字符型数据,在使用时,须指明其最大字节数据。
(2)CHAR
用来存储定长的字符串或字符型数据,使用时也要指定长度,其缺省值为1。
(3)LONG
用来存储可变长的字符串或字符型数据。
2.数字型
数字型用于存储整数或实数。主要有:number、BINARY_INTEGER
(1)NUMER
用于存储数字数据,包括整数或浮点数。在实际应用中,应指定该类型数据长度和小数的位数。在Oracle中其指定的长度不包含小数点和符号位。
(2)BINARY_INTEGER
它是PL/SQL的一个数据类型,它用于带符号的整数值,以2的补码的二进制形式进行存储。
3.日期型
DATE型用于存储日期和时间信息,包括世纪、和、月、日、时、分、秒,其占7个字节,每一部分占一个字节。
4.RAW和LONG RAW
RAW和LONG RAW用来存储二进制数据。
(1)RAW
RAW类似于CHAR,必须指定存储二进制数的最大字节数。
(2)LONG RAW
LONG RAW类似于LONG。
5.ROWID
数据库表中的每一行(ROW)都有一个地址,通过查询伪列ROWID获得该行地址。该伪列的值为16进制字符串,该串的数据类型为ROWID。其字符值的形式为:BLOCK.ROW.FILE。
6. 布尔型
在表中无布尔型的字段类型,只有在PL/SQL中可以定义BOOLEAN型,它的值为TRUE、FALSE、NULL。在定义BOOLEAN型变量时可限定变量为NOT NULL,但此时必须为该变量初始化。
7.复合类型
(1)记录
记录定义的格式如下:
TYPE Record_type IS RECORD(
Field1 Datatype1 [NOT NULL][:=Expression1],
Field2 Datatype2 [NOT NULL][:=Expression2],
…);
在上述格式中Record_type是一种定义的记录类型。
如果要定义记录类型的变量与已建立的某一关系表结构一致,可使用下列定义:
Record_typename table_name%ROWTYPE;
(2) 表
PL/SQL中的表类似于C语言中的数组,并与其数组的处理方式类似,但实现方法不同。表必须定义该表类型,再声明一个属于该类型的变量,然后才能引用。定义表类型的格式如下:
TYPE Table_type IS TABLE OF type INDEX BY BINARY_INTEGER;
一个PL/SQL表类似于数据库中的一个只有两列的表,一列的类型为BINARY_INTEGER,另一列的类型为定义中指定的类型。
8.LOB类型
LOB类型用来存储大型的对象,它可以是一个二进制数值或字符型值,其最大长度为4GB。LOB可包含没有结构特征的数据,对它的访问比对LONG 或LONG RAW数据的访问更为有效,对它的限制更少。
9.自定义子类型
PL/SQL中除可使用预定义的子类型外,用户自己可以定义子类型,其格式为:
SUBTYPE new_type IS original_type
10.使用%TYPE
在许多情况下,PL/SQL变量可以用来处理存储在数据库表中的数据,因而该变量类型与表中相应字段的数据类型相同。可使用%TYPE说明某一变量与表中字段类型相同。其格式为:
variety_name table_name.field_name%TYPE;
用来存储字符串或字符数据,主要类型有VARCHAR2、CHAR和LONG。
(1)VARCHAR2
用来存储可变长的字符串或字符型数据,在使用时,须指明其最大字节数据。
(2)CHAR
用来存储定长的字符串或字符型数据,使用时也要指定长度,其缺省值为1。
(3)LONG
用来存储可变长的字符串或字符型数据。
2.数字型
数字型用于存储整数或实数。主要有:number、BINARY_INTEGER
(1)NUMER
用于存储数字数据,包括整数或浮点数。在实际应用中,应指定该类型数据长度和小数的位数。在Oracle中其指定的长度不包含小数点和符号位。
(2)BINARY_INTEGER
它是PL/SQL的一个数据类型,它用于带符号的整数值,以2的补码的二进制形式进行存储。
3.日期型
DATE型用于存储日期和时间信息,包括世纪、和、月、日、时、分、秒,其占7个字节,每一部分占一个字节。
4.RAW和LONG RAW
RAW和LONG RAW用来存储二进制数据。
(1)RAW
RAW类似于CHAR,必须指定存储二进制数的最大字节数。
(2)LONG RAW
LONG RAW类似于LONG。
5.ROWID
数据库表中的每一行(ROW)都有一个地址,通过查询伪列ROWID获得该行地址。该伪列的值为16进制字符串,该串的数据类型为ROWID。其字符值的形式为:BLOCK.ROW.FILE。
6. 布尔型
在表中无布尔型的字段类型,只有在PL/SQL中可以定义BOOLEAN型,它的值为TRUE、FALSE、NULL。在定义BOOLEAN型变量时可限定变量为NOT NULL,但此时必须为该变量初始化。
7.复合类型
(1)记录
记录定义的格式如下:
TYPE Record_type IS RECORD(
Field1 Datatype1 [NOT NULL][:=Expression1],
Field2 Datatype2 [NOT NULL][:=Expression2],
…);
在上述格式中Record_type是一种定义的记录类型。
如果要定义记录类型的变量与已建立的某一关系表结构一致,可使用下列定义:
Record_typename table_name%ROWTYPE;
(2) 表
PL/SQL中的表类似于C语言中的数组,并与其数组的处理方式类似,但实现方法不同。表必须定义该表类型,再声明一个属于该类型的变量,然后才能引用。定义表类型的格式如下:
TYPE Table_type IS TABLE OF type INDEX BY BINARY_INTEGER;
一个PL/SQL表类似于数据库中的一个只有两列的表,一列的类型为BINARY_INTEGER,另一列的类型为定义中指定的类型。
8.LOB类型
LOB类型用来存储大型的对象,它可以是一个二进制数值或字符型值,其最大长度为4GB。LOB可包含没有结构特征的数据,对它的访问比对LONG 或LONG RAW数据的访问更为有效,对它的限制更少。
9.自定义子类型
PL/SQL中除可使用预定义的子类型外,用户自己可以定义子类型,其格式为:
SUBTYPE new_type IS original_type
10.使用%TYPE
在许多情况下,PL/SQL变量可以用来处理存储在数据库表中的数据,因而该变量类型与表中相应字段的数据类型相同。可使用%TYPE说明某一变量与表中字段类型相同。其格式为:
variety_name table_name.field_name%TYPE;