作者在 2009-06-10 16:04:05 发布以下内容
有三类:
简单变量
复合变量
外部变量
1.
2.组合变量,
可以存放一组数值
用户自定义的数据类型
创建自定义复合类型;
声明复合类型变量;
Oracle中复合类型两种:
TABLES:表类型
RECORDS:记录类型
用户自定义的数据类型
创建自定义复合类型;
声明复合类型变量;
Oracle中复合类型两种:
TABLES:表类型
RECORDS:记录类型
Oracle中的数组
数据类型为BINARY_INTEGER的主键;
数据类型为一个确定简单类型的列;
特点:
不定长度的数组,动态增长长度;
数值列不允许为复合数据类型,只能是简单类型;
通过BINARY_INTEGER主键索引每个数值列
创建语法:
TYPE type_name IS TABLE OF value_datatype
[NOT NULL] INDEX BY BINARY_INTEGER
数据类型为BINARY_INTEGER的主键;
数据类型为一个确定简单类型的列;
特点:
不定长度的数组,动态增长长度;
数值列不允许为复合数据类型,只能是简单类型;
通过BINARY_INTEGER主键索引每个数值列
创建语法:
TYPE type_name IS TABLE OF value_datatype
[NOT NULL] INDEX BY BINARY_INTEGER
n表类型实例:
¨创建类型;
TYPE v_depnames IS TABLE OF varchar2(20) NOT NULL INDEX BY BINARY_INTEGER;
¨定义变量:
nV1_NAME v_depnames
nV2_NAME v_depnames
Oracle中的结构(Struct)
由一个或者多个组件组成:域;
每个组件的数据类型不限制;
创建语法:
TYPE type_name IS RECORD
(
field1_name field_datatype [NOT NULL]
[:=default value],
field2_name field_datatype,
…
);
由一个或者多个组件组成:域;
每个组件的数据类型不限制;
创建语法:
TYPE type_name IS RECORD
(
field1_name field_datatype [NOT NULL]
[:=default value],
field2_name field_datatype,
…
);
n记录类型实例:
¨创建类型:
TYPE emp IS RECORD
(
emp_no number(10),
first_name varchar2(20),
last_name varchar2(20),
age BINARY_INTEGER
);
Emp_record emp;
Emp_record.emp_no:=100;
Emp_record.first_name:=‘JACK’;
3.外部变量
通过%TYPE声明变量:定义不确定的变量类型
通过一个已经声明过的变量类型或者一个数据库中表的字段类型作为参照对象,声明与参照对象完全一样的数据类型,并保持同步变化
语法:变量 参照对象%TYPE;
通过一个已经声明过的变量类型或者一个数据库中表的字段类型作为参照对象,声明与参照对象完全一样的数据类型,并保持同步变化
语法:变量 参照对象%TYPE;
n
¨优势:
n通过未知表字段的类型来声明变量
n保持变量类型的同步改变
¨实例:
vlast_name EMP.lastname%TYPE;
v_age number(3,0);
v2_age v_age%TYPE:=30;
通过%ROWTYPE声明变量
通过一个已经声明过的记录类型或者一个数据库中的表作为参照对象,声明与参照对象完全一样的数据类型,并保持同步变化
创建的变量是一个记录类型的变量,可以存储参照对象表中的一行数据记录
语法:变量 参照对象表%ROWTYPE;
通过一个已经声明过的记录类型或者一个数据库中的表作为参照对象,声明与参照对象完全一样的数据类型,并保持同步变化
创建的变量是一个记录类型的变量,可以存储参照对象表中的一行数据记录
语法:变量 参照对象表%ROWTYPE;
n ¨优势:
n可以未知表的字段个数和数据类型
n保持变量类型与表结构变化的同步改变
¨实例:
emp_record EMP%ROWTYPE;