首页 > 解决方案 > plsql 未声明错误,即使强硬也应该声明

问题描述

您好,我是 Plsql 的新手,我尝试为新员工获取新 ID

这是表emp:

EMPNO             NUMBER(4)    
ENAME             VARCHAR2(10) 
JOB               VARCHAR2(9)  
MGR               NUMBER(4)    
HIREDATE          DATE         
SAL               NUMBER(7,2)  
COMM              NUMBER(7,2)  
DEPTNO   NOT NULL NUMBER(2)

这是我的功能

DECLARE 
 empno number;
FUNCTION findNewEmpno  
RETURN number 
IS 
    empno number; 
BEGIN 
   select Max(empno)
   into empno from emp;
END; 
BEGIN 
   dbms_output.put_line(' New Empno is : ' || empno); 
END; 
/ 

这是我收到的错误消息:

Error report -
ORA-06550: line 13, column 7:
PLS-00201: identifier 'FINDNEWEMPNO' must be declared
ORA-06550: line 13, column 7:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.

我不知道为什么 FINDNEWEMPNO 没有被清除。函数位于调用它的位置之上。

标签: oracleplsql

解决方案


应该是这样的:

  • 创建一个函数
  • 称它为

SQL> create or replace function findnewempno
  2    return number
  3  is
  4    v_empno number;
  5  begin
  6    select max(empno)
  7      into v_empno
  8      from emp;
  9
 10    return v_empno;
 11  end;
 12  /

Function created.

SQL> select findnewempno from dual;

FINDNEWEMPNO
------------
        7934

SQL>

或者,当您尝试显示它时:

SQL> set serveroutput on
SQL>
SQL> begin
  2    dbms_output.put_line('Max EMPNO = ' || findnewempno);
  3  end;
  4  /
Max EMPNO = 7934

PL/SQL procedure successfully completed.

SQL>

推荐阅读