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编辑器上运行了这个程序。
答案 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。