如何为函数添加例外?

时间:2016-07-06 08:58:36

标签: plsql

FUNCTION XX_GETSAL(N_ENO NUMBER) RETURN NUMBER IS
    N_SALARY NUMBER;
  BEGIN
    SELECT SAL INTO N_SALARY FROM XX_TBEMP WHERE ENO = N_ENO;
    RETURN N_SALARY;
    COMMIT;
  END;

在这个函数中我想补充一些例外情况,即当我给出表格中没有的eno号时,它必须给我一个例外条件我们如何添加

2 个答案:

答案 0 :(得分:0)

你可以这样做(例如):

  FUNCTION XX_GETSAL(N_ENO NUMBER) RETURN NUMBER IS
    N_SALARY NUMBER;
  BEGIN
    SELECT SAL INTO N_SALARY FROM XX_TBEMP WHERE ENO = N_ENO;
    RETURN N_SALARY;
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      RETURN NULL;
  END;

(NB COMMIT在此功能中没有位置。)

答案 1 :(得分:0)

我会对上面的代码做一点修改,因为函数会返回一个数字,你可以选择返回一个表示NO_DATA_FOUND条件的数字(例如我选择了-1):

CREATE OR REPLACE FUNCTION XX_GETSAL(N_ENO NUMBER) RETURN NUMBER IS
    N_SALARY NUMBER;
  BEGIN
    SELECT SAL INTO N_SALARY FROM XX_TBEMP WHERE ENO = N_ENO;
    RETURN N_SALARY;
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      RETURN -1;
END;

我还在代码中添加了CREATE OR REPLACE。 只是我对它的看法。