1.pl/sql记录。示例如下:
declare
type emp_record_type is record(
name emp.ename%type,
salary emp.sal%type,
title emp.job%type);
emp_record emp_record_type;
begin
select ename,sal,job into emp_record
from emp where empno=7788;
dbms_output.put_line('雇员名:'||emp_record.name);
end;
2.pl/sql表:pl/sql表类似于高级语言中的数组。需要注意:pl/sql表语高级语言的数组有所区别,pl/sql表的下标可以为负,pl/sql表的元素个数没有限制,并且其下标没有上下限。必须首先定义pl/sql表类型和变量,才能使用。不可作为表列的数据类型。如:
declare
type ename_table_type is table of emp.ename%type
index by binary_integer;
ename_table ename_table_type;
begin
select ename into ename_table(-1)
from emp where empno=7788;
dbms_output.put_line('雇员名:'||ename_table(-1) );
3.嵌套表:嵌套表(nested table)类似于高级语言中的数组。需要注意:高级语言和嵌套表的下标都不能为负值;嵌套表的元素个数没有限制。嵌套表可以作为表列的数据类型。使用create type语句建立嵌套表类型。如:
create or replace type emp_type as object(
name varchar2(10),salary number(6,2),hiredate date);
/
create or replace type emp_array is table of emp_type;
/
如例所示,对象类型emp_type用于存储雇员信息,而emp_array是基于emp_type的嵌套表类型,它可以用于存储多个雇员信息。可以再表列或对象属性中将嵌套表作为自定义数据类型来引用。需要注意:作为表列时,必须要为其指定专门的存储表。如:
create table department(
deptno number(2),dname varchar2(10),
employee emp_arry
) nested table employee store as employee;
4.varray:类似于嵌套表,可以作为表列和对象类型属性的数据类型。但需要注意:嵌套表的元素个数没有限制,但是varray的元素个数是有限制的。如:
create type article_type as object (
title varchar2(30),pubdate date);
/
create type article_array is varray(20) of article_type;
/
如例所示,对象类型article_type用于存储文章信息,而article_array用于存储多篇文章的信息,并且最多可以存储20篇文章。当建立了varray类型之后,可以再表列或对象属性中将其作为用户自定义数据类型来引用。如:
create table author (
id number(6),name varchar2(10),article article_array );
注意,嵌套表列数据需要存储在专门的存储表中,而varray数据则与其他数据一起存放在表段中。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22786751/viewspace-619970/ ,如需转载,请注明出处,否则将追究法律责任。