请查看下面的程序并解释为啥会出现错误
Posted
技术标签:
【中文标题】请查看下面的程序并解释为啥会出现错误【英文标题】:please look the below program and explai me why the error is given请查看下面的程序并解释为什么会出现错误 【发布时间】:2015-02-26 23:39:29 【问题描述】: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 编辑器上运行了这个程序。
【问题讨论】:
请编辑您的问题并包含emp
表的定义。谢谢。
【参考方案1】:
试试
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。
【讨论】:
以上是关于请查看下面的程序并解释为啥会出现错误的主要内容,如果未能解决你的问题,请参考以下文章