PL/SQL记录
pl/sql表只有一行,但是有多列。

定义:TYPE <类型名> IS RECORD <列名1 类型1,列名2 类型2,...列名n 类型n,> [NOT NULL]
<列的类型>可以为Oracle的数据类行以及用户自定义类型;可以是记录类型的嵌套


使用
示例:
DECLARE
    
TYPE myrecord IS RECORD(id emp.empno%type,
     name emp.ename%type,sal emp.sal%type);     --定义一个名为myrecoed的PL/sql记录类型;
     rec_1 myrecord; --为myrecord类型实例化一个rec_1对象;
BEGIN
          select empno,ename,sal into rec_1.id,rec_1.name,rec_1.sal
    
     from emp where empno=7788;        --将得到的值输入pl/sql记录
          dbms_output.put_line(rec_1.id||' '||rec_1.name||' '||rec_1.sal); --打印pl/sql记录的内容
END;




结合使用PL/SQL表和PL/SQL记录
示例:
DECLARE
    
CURSOR c_1 is select empno,ename,job,sal from emp;
     TYPE myrecord IS RECORD(empno emp.empno%type,ename emp.ename%type,
job emp.job%type,sal emp.sal%type);
     --定义一个名为myrecoed的PL/sql记录类型;
     TYPE mytable IS TABLE OF myrecord index by binary_integer;
                                                                   --定义一个名为mytable的PL/sql表类型;字段类型为PL/sql记录类型

    
n number:=1;
    
tab_1 mytable; --为mytable类型实例化一个tab_1对象;
BEGIN
    
     --赋值
    
     for i in c_1
    
     loop
               tab_1(n).empno:=i.empno;
    
          tab_1(n).ename:=i.ename;                    
    
          tab_1(n).job:=i.job;
    
          tab_1(n).sal:=i.sal;
    
          n:=n+1;
    
     end loop;
    
     n:=1;
    
     --输出
    
     for i in n..tab_1.count
    
     loop
    
           dbms_output.put_line(i||' '||tab_1(i).empno
    
           ||' '||tab_1(i).ename||' '||tab_1(i).job||' '||tab_1(i).sal);
    
     end loop;
END;