创建过程Oracle SQL Developer时出现异常错误

拉米什

在过去的2个小时里,我一直在动脑筋,无法找到解决此错误的方法。我正在创建一个简单的程序来查找雇员。PL / SQL一直给我错误。问题是什么 ?我在这里做错了什么?

这是我的程序:

create or replace PROCEDURE find_employee (employeeNo IN number) as
    INVALID_ID exception;
    TOO_MANY_ROWS exception;
    res number;
BEGIN
    dbms_output.enable;
    Select count(*) into res from employee where ID=employeeNo;
    if (res>1)then      -- Checking that the total count of the employee is 1 or not
        raise TOO_MANY_ROWS;                                            -- if greater then 1 then it raise TOO_MANY_ROWS error
    ELSE IF (NOT EXISTS (Select ID from employee where ID=employeeNo))  -- Checking that the employeeNo user passes exist or not
    then
        raise INVALID_ID;                                               -- if employeeNo doesnot exit then display invalid id message
    ELSE
        Select* from Employee where ID=employeeNo;                      -- else return employee info whose id==employeeNo
    END IF;
EXCEPTION
    when TOO_MANY_ROWS then
        DBMS_OUTPUT.PUT_LINE ('Too many Rows with same employee id');
    when INVALID_ID then
        DBMS_OUTPUT.PUT_LINE ('Invalid employee id');
END find_employee;

错误是这样的:

Error(15,1): PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following:     ( begin case declare end exit for goto if loop mod null    pragma raise return select update while with <an identifier>    <a double-quoted delimited-identifier> <a bind variable> <<    continue close current delete fetch lock insert open rollback    savepoint set sql execute commit forall merge pipe purge 

Error(20,18): PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:     end not pragma final instantiable order overriding static    member constructor map 

请上帝帮助我:'(

小脚丫

您丢失了END IF第16行)。如果您编写格式化的代码(嵌套IF应缩进),则更容易发现它

SQL> create or replace PROCEDURE find_employee (employeeNo IN number) as
  2      INVALID_ID exception;
  3      TOO_MANY_ROWS exception;
  4      res number;
  5  BEGIN
  6      dbms_output.enable;
  7      Select count(*) into res from employee where ID=employeeNo;
  8      if (res>1)then      -- Checking that the total count of the employee is 1 or not
  9          raise TOO_MANY_ROWS;                                            -- if greater then 1 then it raise TOO_MANY_ROWS error
 10      ELSE IF (NOT EXISTS (Select ID from employee where ID=employeeNo))  -- Checking that the employeeNo user passes exist or not
 11      then
 12          raise INVALID_ID;                                               -- if employeeNo doesnot exit then display invalid id message
 13      ELSE
 14          Select* from Employee where ID=employeeNo;                      -- else return employee info whose id==employeeNo
 15      END IF;
 16      END IF;        --> this is missing
 17  EXCEPTION
 18      when TOO_MANY_ROWS then
 19          DBMS_OUTPUT.PUT_LINE ('Too many Rows with same employee id');
 20      when INVALID_ID then
 21          DBMS_OUTPUT.PUT_LINE ('Invalid employee id');
 22  END find_employee;

正如@Dornaut所评论的那样,该代码可能不是最好的代码这是另一个选择;看看是否有帮助。

CREATE OR REPLACE PROCEDURE find_employee (employeeNo IN NUMBER)
AS
   res    NUMBER;
   e_row  employee%ROWTYPE;
BEGIN
   SELECT *
     INTO e_row
     FROM employee
    WHERE id = employeeNo;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      DBMS_OUTPUT.put_line ('Invalid employee ID');
   WHEN TOO_MANY_ROWS
   THEN
      DBMS_OUTPUT.put_line ('Too many rows with same employee ID');
END find_employee;

因此:如果SELECT返回NO_DATA_FOUNDTOO_MANY_ROWS,它将得到处理。否则,它将把整个行提取到一个变量中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建zipfile时出现异常错误

来自分类Dev

创建临时表存储过程时出现我的SQL错误

来自分类Dev

通过Java创建Kafka主题时出现异常

来自分类Dev

使用CSOM创建Wiki页面时出现异常

来自分类Dev

通过Java创建Kafka主题时出现异常

来自分类Dev

使用fastxml从JSON创建Java对象时出现异常

来自分类Dev

创建 spring Pollable Channel 时出现异常

来自分类Dev

执行 Hive 创建表语句时出现异常

来自分类Dev

出现异常时如何不创建对象(python)?

来自分类Dev

使用oracle Scheduler调度时Sql过程处理异常

来自分类Dev

尝试创建池分配器时,VC12中出现异常错误消息

来自分类Dev

Oracle SQL 过程。这里的错误是什么?

来自分类Dev

尝试在oracle sql中执行过程时出现“游标已打开”错误

来自分类Dev

在Oracle SQL Developer中创建表时出现“缺少关键字”

来自分类Dev

%ROWTYPE创建pl / sql过程时出现的问题

来自分类Dev

在Visual Studio 15中创建存储过程时出现SQL46010语法错误

来自分类Dev

如何解决我尝试创建此过程时出现的错误“ERROR 102 sql state 420000”

来自分类Dev

SQL语法错误。创建存储过程

来自分类Dev

SQL语法错误。创建存储过程

来自分类Dev

在Oracle pl / sql中使用插入语句创建过程

来自分类Dev

创建表时出现SQL错误

来自分类Dev

如何在Oracle SQL Developer中运行存储过程?

来自分类Dev

在 Oracle SQL Developer 中查看过程的上次编辑日期

来自分类Dev

初始化与SQL Server的连接时出现异常SqlException

来自分类Dev

使用实体框架 6 将枚举值传递给存储过程时出现异常

来自分类Dev

为什么我在 .Net 中通过 npgsql 运行函数(存储过程)时出现异常?

来自分类Dev

Oracle SQL Plus:创建用户时出现错误“ ORA-00922:缺少或无效的选项”

来自分类Dev

Oracle SQL Plus:创建用户时出现错误“ ORA-00922:缺少或无效的选项”

来自分类Dev

从组创建团队失败,出现异常

Related 相关文章

  1. 1

    创建zipfile时出现异常错误

  2. 2

    创建临时表存储过程时出现我的SQL错误

  3. 3

    通过Java创建Kafka主题时出现异常

  4. 4

    使用CSOM创建Wiki页面时出现异常

  5. 5

    通过Java创建Kafka主题时出现异常

  6. 6

    使用fastxml从JSON创建Java对象时出现异常

  7. 7

    创建 spring Pollable Channel 时出现异常

  8. 8

    执行 Hive 创建表语句时出现异常

  9. 9

    出现异常时如何不创建对象(python)?

  10. 10

    使用oracle Scheduler调度时Sql过程处理异常

  11. 11

    尝试创建池分配器时,VC12中出现异常错误消息

  12. 12

    Oracle SQL 过程。这里的错误是什么?

  13. 13

    尝试在oracle sql中执行过程时出现“游标已打开”错误

  14. 14

    在Oracle SQL Developer中创建表时出现“缺少关键字”

  15. 15

    %ROWTYPE创建pl / sql过程时出现的问题

  16. 16

    在Visual Studio 15中创建存储过程时出现SQL46010语法错误

  17. 17

    如何解决我尝试创建此过程时出现的错误“ERROR 102 sql state 420000”

  18. 18

    SQL语法错误。创建存储过程

  19. 19

    SQL语法错误。创建存储过程

  20. 20

    在Oracle pl / sql中使用插入语句创建过程

  21. 21

    创建表时出现SQL错误

  22. 22

    如何在Oracle SQL Developer中运行存储过程?

  23. 23

    在 Oracle SQL Developer 中查看过程的上次编辑日期

  24. 24

    初始化与SQL Server的连接时出现异常SqlException

  25. 25

    使用实体框架 6 将枚举值传递给存储过程时出现异常

  26. 26

    为什么我在 .Net 中通过 npgsql 运行函数(存储过程)时出现异常?

  27. 27

    Oracle SQL Plus:创建用户时出现错误“ ORA-00922:缺少或无效的选项”

  28. 28

    Oracle SQL Plus:创建用户时出现错误“ ORA-00922:缺少或无效的选项”

  29. 29

    从组创建团队失败,出现异常

热门标签

归档