1、记录类型是用于处理单行多列数据的。如果使用标量变量处理单行多列数据,需要定义多个标量变量接受列数据。
declare
v_ename emp.ename%type;
v_sal
emp.sal%type;
v_job
emp.job%type;
begin
select
ename,sal,job into v_ename,v_sal,v_job from emp where empno =
7788;
dbms_output.put_line('xingming:'||v_ename);
dbms_output.put_line('gongzi'||v_sal);
dbms_output.put_line('gongzuo'||v_job);
end;
注意 select (ename,sal,job )into (v_ename,v_sal,v_job) from emp
where empno = 7788;//不对,不能有括号。括号的使用
如果使用记录
DECLARE
TYPE emp_record_type
IS RECORD(
name emp.ename%type ,
sal emp.sal%type ,
job emp.job%type
) ;//定义记录类型 ,使用rowtype定义时,不需要使用type定义。
emp_record emp_record_type;
begin
select ename, sal , job
into emp_record from emp where
empno = 7788;
dbms_output.put_line('xingming:'||v_ename);
dbms_output.put_line('gongzi'||v_sal);
dbms_output.put_line('gongzuo'||v_job);
end ;
使用rowtype定义记录变量即可,无需定义记录类型了。
emp_record emp%rowtype;
2、oracle
9i之前,如果用记录向表中插入数据,那么只能使用记录成员;oracle9i之后,既可以使用记录成员,也可以直接使用记录。
3、oracle
9i之前,如果用记录更新数据,那么只能使用记录成员;oracle9i之后,既可以使用记录成员,也可以直接使用记录。
dept_record dept%rowtype;
...
update dept set row = dept_record where deptno = 30;
4、删除记录时,只能在delete语句的where子句中使用记录成员。