读书人

PLS-00382: 表达式类型错误-pl/sql编程

发布时间: 2014-01-28 21:22:58 作者: rapoo

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

        

读书人网 >oracle

热点推荐