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;