oracle - 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 没有被清除。函数位于调用它的位置之上。
解决方案
应该是这样的:
- 创建一个函数
- 称它为
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>
推荐阅读
- java - 构建一个包含来自 Github 的 YAML 文件的 jar 文件
- python - python Linebreak 与 json dic?
- python - 合并 Post.query.filter 和 Post.query.order_by
- android - 无法在 Unity 中构建适用于 Android 的 Google VR 应用
- python - 即使在用户输入之后,if 语句也不运行
- jquery - jquery - 代码块完成后执行函数调用(包含动画)
- javascript - 如何在 Array.prototype.map 中使用 await 来等待 RxJS Observables
- c++ - 将 C++ 中的数组转换为字符串
- android - Android:ConstraintLayout 尺寸比例+宽度百分比
- mysql - 用于查找记录所有者的 Db 模式