请查看下面的程序并解释为啥会出现错误

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。

【讨论】:

以上是关于请查看下面的程序并解释为啥会出现错误的主要内容,如果未能解决你的问题,请参考以下文章

谁在调用错误视图,为啥?

为啥有时小吃店会失败

vscode调试的为啥会出现两个错误??

为啥出现ERR_SSL_PROTOCOL_ERROR 错误啊?

有人可以解释为啥会出现这个错误吗?

Win10账户登录不上去,电脑一打开就会出现下面的提示,应用程序错误?