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;