pl/sql除了可以使用Orecle规定的基本类型外,还提供了3种特殊的数据类型%type类型、record类型和%rowtype类型。
【%type类型】
使用%type可以声明一个与指定列名称相同的数据类型,例如 :v_id emp.id%type 是声名一个和emp表中id字段相同类型的变量。
使用%type定义变量有两点好处:第一,定义变量时不必查看表中各个列的数据类型;第二,如果表中列数据类型进行了修改,使用%type定义的变量会自动进行调整。
【 record类型】
也称记录类型,使用record的变量可以存储多个列值组成的一行数据。使用方式如下:
declare
type emp_type is record( ---------------------声明record类型emp_type
v_id emp.id%type;
v_name emp.name%type;
)
empInfo emp_type; -------------------声明emp_type类型的变量empInfo
begin
select id name into empInfo from emp where id=1;
/*
查询emp表中id为1的记录赋给empInfo
*/
dbms_output.put_line(empInfo.v_id||'==========>'||empInfo.v_name);
end;
【 】
%rowtype类型的变量结合了%type类型和record类型的优点,可以根据表中行的结构定义数据类型,用来存储一条记录。例如:
declare
empInfo emp%rowtype;
begin
select * into empInfo from emp where id=1;
dbms_output.put_line(empInfo.id||'========>'||emp.name);
end;