您的位置:首页 > 数据库

pl/sql记录类型

2009-08-13 16:08 267 查看
1.定义plsql记录

可以自定义记录类型和记录变量。

也可以使用%rowtype属性定义记录变量。

自定义plsql记录

需要分别定义记录类型和记录变量。

例如:

declare

type emp_record_type is record( //定义记录类型

name emp.ename%type, //记录成员

sal emp.sal%type,

job emp.job%type

);

emp_record emp_record_type; //声明emp_record记录变量

使用%ROWTYPE属性定义记录变量

%ROWTYPE可以基于表或视图定义记录变量。当使用该属性定义记录变量时,记录成员的名称和类型与表或视图列的名称和类型完全相同。

例如:

declare

emp_record emp%rowtype;

2.使用plsql记录。

在select into语句中使用plsql记录。如果选择列表包含的多个列和表达式,并且使用标量接收数据,就需要定义多个标量,如果使用plsql记录接收数据就只需要定义一个记录变量即可,从而简化了数据的处理。

在select..into语句中使用plsql记录时,既可以使用记录变量,也可以使用记录成员。

在select..into中使用记录变量。

例如:

declare

type emp_record_type is record(

v_no emp.empno%type,

v_name emp.ename%type,

v_sal emp.sal%type

);

emp_record emp_record_type;

begin

select empno,ename,sal into emp_record from emp where empno=6044;

dbms_output.put_line(emp_record.v_no);

dbms_output.put_line(emp_record.v_name);

dbms_output.put_line(emp_record.v_sal);

end;

注意:当引用记录成员时,必须在成员明之前加记录变量名作为前缀。

在select..into中使用记录成员。

例如:

declare

type emp_record_type is record(

v_no emp.empno%type,

v_name emp.ename%type,

v_sal emp.sal%type

);

emp_record emp_record_type;

begin

select empno,sal,ename into emp_record.v_no,emp_record.v_sal,emp_record.v_name

from emp where empno=6044;

dbms_output.put_line(emp_record.v_no);

dbms_output.put_line(emp_record.v_name);

dbms_output.put_line(emp_record.v_sal);

end;

注意:选择列表项和记录成员的匹配问题。

在insert语句中使用plsql记录(使用记录成员)

例如:

declare

temp_record temp%rowtype;

begin

temp_record.CUSTOMER_NAME:='张三';

temp_record.CITY:='北京';

insert into temp values(temp_record.CUSTOMER_NAME,temp_record.CITY);

end;

在updat语句中使用plsql记录(使用记录成员)

例如:

declare

temp_record temp%rowtype;

begin

temp_record.CUSTOMER_NAME:='王五';

temp_record.CITY:='上海';

update temp set temp.customer_name=temp_record.CUSTOMER_NAME,

city=temp_record.CITY

where CUSTOMER_NAME='张三';

end;

在delete语句中使用plsql记录

例如:

declare

temp_record temp%rowtype;

begin

temp_record.CUSTOMER_NAME:='王五';

delete from temp where temp.customer_name=temp_record.CUSTOMER_NAME;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: