每个PL/SQL常量、变量、参数和函数返回值都有一个数据类型,决定了它的存储格式以及它的有效值和操作。PL/SQL预定义了一套完善的标量和复合数据类型,也可以创建用户自定义类型。
(1)标量类型:用于存储单个值、内部没有子组件的数据类型。PL/SQL标量数据类型可以进一步划分为以下几种。
①SQL数据类型,如字符数据类型、数值类型、日期类型、布尔类型等。
②REF CURSOR类型。
③PLS_INTEGER等PL/SQL预定义的子类型。
④用户定义的PL/SQL子类型。
(2)复合类型:复合类型是指内部包含子组件的数据类型,每个子组件都是一个标量或复合类型。如记录类型、联合数组类型、嵌套表类型、可变数组类型等。
子类型是在标准类型上添加一些限制生成的新类型,是其基本类型的子集。PLS_INTERGER就是PL/SQL预定义的子类型,PL/SQL还允许用户定义自己的子类型,语法格式如下。
subtype_name指定子类型的名称。
type_name指定子类型所基于的原始类型的名称。原始类型可以是任何标量或用户定义的PL/SQL数据类型说明符,如CHAR、DATE或RECORD(包括先前定义的用户定义子类型)。
constraint子句定义支持精度或小数位数的类型的限制。语义描述如下。
precision指定子类型值中允许的总位数。
scale指定子类型值中允许的小数位数。
length指定CHARACTER、VARCHAR或TEXT基本类型值中允许的总长度。