PLS-00382: 表达式类型异常-pl/sql编程中关于同类型的record变量
PLS-00382: 表达式类型错误-pl/sql编程中关于同类型的record变量
点击右边红色标题查看本文完整版:PLS-00382: 表达式类型错误-pl/sql编程中关于同类型的record变量赋值问题
v_emp t_emp;
v_emp1 t_emp1;
v_emp和v_emp1是不同类型的两个变量,虽然两个类型t_emp和t_emp1的定义是相同的。Oracle能对自带的变量类型进行隐式转换,比如integer和varchar2。但对用户自定义的复杂类型,隐式转换是不可能的。
点击右边红色标题查看本文完整版: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
------解决方法--------------------
<!--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。但对用户自定义的复杂类型,隐式转换是不可能的。