您的位置:首页 > 数据库

pl/sql记录类型

2016-07-29 00:00 183 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQL