首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

PLS-00382: 表达式类型错误-pl/sql编程中关于同类型的record变量赋值问题

2014-01-28 
同类型的record变量应该可以相互赋值,但是我写的程序报错,大家帮忙看看! declare type t_emp is record( v_

同类型的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
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。但对用户自定义的复杂类型,隐式转换是不可能的。

        

热点排行