【问题标题】:The when others then does not work. However, the first exception handling works if the department name does not exist当其他人不起作用时。但是,如果部门名称不存在,则第一个异常处理有效
【发布时间】:2020-04-29 23:24:51
【问题描述】:

我试图通过添加 when others then 来解决这个问题,但它似乎不起作用。它仅在部门名称不存在时有效,它会显示 No DATA FOUND 但当部门名称匹配时,它不会显示任何内容。我想知道如何解决这个问题

DECLARE
   dept_id      departments.department_id%TYPE;
   mgr_id       departments.manager_id%TYPE;
BEGIN
   SELECT   department_ID, Manager_ID 
        INTO   dept_id, mgr_id
        FROM   departments
    Where  Department_name = 'IT'; 
  EXCEPTION
  WHEN NO_DATA_FOUND THEN 
    DBMS_OUTPUT.PUT_LINE('NO DATA FOUND');

    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE ('The department ID is: ' || dept_id || 
                 '; Manager ID is: ' || mgr_id);  
                     -- change the value of IT to 'ABC'

END;

当别人解决这个问题时我不得不使用

【问题讨论】:

  • OTHERS 用于 other 例外。如果您的选择有效,那么也不例外。我建议您阅读 oracle pl/sql 文档

标签: sql oracle stored-procedures plsql


【解决方案1】:

数据将在 select 语句之后被选中并可供使用。当 select 语句失败时,控制跳转到异常块。用户可以根据需要处理异常。其他人处理任何未处理的异常时的目的,主要用于开发人员没有任何控制权并且不想处理任何异常时。例如 TOO_MANY_ROWS 不在代码中处理,但会在 OTHERS 异常中被捕获。

 DECLARE
       dept_id      departments.department_id%TYPE;
       mgr_id       departments.manager_id%TYPE;
    BEGIN

       SELECT   department_ID, Manager_ID 
            INTO   dept_id, mgr_id
            FROM   departments
        Where  Department_name = 'IT'; 

     DBMS_OUTPUT.PUT_LINE ('The department ID is: ' || dept_id || 
                     '; Manager ID is: ' || mgr_id);

     IF dept_id IS NOT NULL THEN 
         UPDATE departments
         SET DEPARTMENT_NAME ='ABC'
         WHERE department_ID = dept_id
         AND Manager_ID = mgr_id;
     END IF;

      EXCEPTION
      WHEN NO_DATA_FOUND THEN 
        DBMS_OUTPUT.PUT_LINE('NO DATA FOUND');

        WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE (' In other Error '||SQLERRM||' '||SQLCODE);  
                         -- change the value of IT to 'ABC'

    END;

【讨论】:

    猜你喜欢
    • 2015-01-18
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2022-07-01
    • 2021-04-18
    相关资源
    最近更新 更多