您的位置:首页 > 数据库

PL/SQL入门--复合类型及集合

2012-08-01 12:12 483 查看
7.复合数据类型

7.1定义PL/SQL记录
自定义PL/SQL记录:需要定义PL/SQL记录类型和记录变量,identifier用于指定记录变量名
type type_name is record(

field_declaration[,

field_declaration]...

);

identifier type_name;


declare

type emp_record_type is record(

name emp.ename%type,

salary em.sal%type,

dno emp.deptno%type);

emp_record emp_record_type;

使用%rowtype属性定义记录变量:可以基于表或视图定义记录变量
当使用%ROWTYPE属性定义记录变量时,记录成员个数,名称,类型与表或视图列的个数,名称,类型完全相同.
dept_record dept%rowtype;

emp_record emp%rowtype;

在select into 语句中使用PL/SQL 记录
在select into 语句中使用记录变量
set serveroutput on

declare type emp_record_type is record( name emp.ename%type, salary em.sal%type, dno emp.deptno%type); emp_record emp_record_type;
begin

select ename,sal,deptno into emp_record from emp where empno=&no;

dbms_output.put_line(emp_record.name);

end;

7.2在select into 语句中使用记录成员
declare

type emp_record_type is record(

name emp.ename%type,

salary emp.sal%type,

dna emp.deptno%type);

emp_record emp_record_type;

begin

select ename,sal into emp_record.name,emp_record.salary from emp where empno=&no;

dbms_output.put_line(emp_record.name);

end;

7.3在insert语句中使用PL/SQL记录
在VALUES子句中使用记录变量

declare

dept_record dept%rowtype;

begin

dept_record.deptno:=50;

dept_record.dname:='administrator';

dept_record.loc:='beijing';

insert int dept values dept_record;

end;


在VALUES子句中使用记录成员
declare

dept_record dept%rowtype;

begin

dept_record.deptno:=60;

dept_record.dname:='sales';

insert into dept (deptno,dname) values (dept_record.deptno,dept_record.dname);

end;

7.4在UPDATE语句中使用PL/SQL记录
在SET子句中使用记录变量
declare

dept_record dept%rowtype;

begin

dept_record.deptno:=30;

dept_record.dnama:='sales';

dept_record.loc:='shanghai';

update dept set row=dept_record where deptno=30;

end;

在SET子句中使用记录成员
declare

dept_record dept%rowtype;

begin

dept_record.loc:='guangzhou';

update dept set loc=dept_record.loc where deptno=10;

end;

7.5在DELETE语句中使用PL/SQL记录:只能在DELETE语句中的WHERE子句中使用记录成员
declare

dept_record dept%rowtype;

begin

dept_record.deptno:=50;

delete from dept where deptno=dept_record.deptno;

end;

感谢April-MyHou!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 记录 pl/sql