PLS-00382: 表达式类型异常-pl/sql编程中关于同类型的record变量

PLS-00382: 表达式类型错误-pl/sql编程中关于同类型的record变量
点击右边红色标题查看本文完整版:PLS-00382: 表达式类型错误-pl/sql编程中关于同类型的record变量赋值问题

同类型的record变量应该可以相互赋值,但是我写的程序报错,大家帮忙看看!
declare
type t_emp is record(
v_empno emp.empno%type,  --emp表是以scott用户登录时自带的表
v_ename emp.ename%type,
v_job  emp.job%type);

type t_emp1 is record(
v_empno emp.empno%type,
v_ename emp.ename%type,
v_job  emp.job%type);

v_emp t_emp;
v_emp1 t_emp1;
begin
select empno,ename,job
into  v_emp
from emp
where empno = 7566;
v_emp1 := v_emp;  --不知道为什么不可以  这里就是第20行
dbms_output.put_line(v_emp1.v_job);
end;


报错信息
ORA-06550: 第 20 行, 第 11 列:
PLS-00382: 表达式类型错误
ORA-06550: 第 20 行, 第 1 列:
PL/SQL: Statement ignored

------解决方法--------------------
 

SQL code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->v_emp t_emp;v_emp1 t_emp1;
------解决方法--------------------
探讨
v_emp t_emp;
v_emp1 t_emp1;

v_emp和v_emp1是不同类型的两个变量,虽然两个类型t_emp和t_emp1的定义是相同的。Oracle能对自带的变量类型进行隐式转换,比如integer和varchar2。但对用户自定义的复杂类型,隐式转换是不可能的。