请查看以下程序并解释为什么会出现错误

时间:2015-02-26 23:39:29

标签: plsql

create or replace package ins_emp
is
procedure insert_emp(
p_ename emp.ename%type,
p_sal emp.sal%type,
p_deptno emp.deptno%type);

end ins_emp;

create or replace package body ins_emp
is

function gen_no
return number
is

v_empno emp.empno%type;
begin
select max(empno) into v_empno from emp;
v_empno:=empno+1;
return v_empno;

end;
procedure insert_emp(
p_ename emp.ename%type,
p_sal emp.sal%type,
p_deptno emp.deptno%type)
is 
p_eno emp.empno%type;

begin


p_eno:=gen_no;

insert into emp(empno,ename,sal,deptno) values(p_eno,p_ename,p_sal,p_deptno);



end insert_emp;

end ;

在上面的代码包中创建成功。但是包体显示错误,因为语句忽略标识符'EMPNO'必须声明。我在sqlplus编辑器上运行了这个程序。

1 个答案:

答案 0 :(得分:0)

尝试

function gen_no
return number
is
    v_empno emp.empno%type;
begin
    select max(empno) + 1 into v_empno from emp;

    return v_empno;
end;

你不能在SQL部分之外使用empno。