sqlcode与sqlerrm的分

sqlCode:是数据库操作的返回码,其中0–中标;-1–失败;100–没有寻找到数量。

 sqlerrm:是累累回指定错误代码的错误信息。

在一个内在的百般中,SQLCODE返回Oracle错误的序号,而SQLERRM返回的是相应的一无是处信息,错误信息首先显示的是错误代码。

SQLCODE返回的凡负数,除非Oracle的错啊“ORA-01403:NO DATA
FOUND”(译:ORA-01403:未找到数据),

当Oracle错误吗“ORA-01403:NO DATA FOUND”时,其对应之SQLCODE为+100。

于用户从定义之老,SQLCODE返回的是+1,而SQLERRM返回的凡User-Defined
Exception。
  
一个Oracle的缪信息太多只能分包512独字节的错误代码。

如果无生被触发,则SQLCODE返回0,SQLERRM返回“ORA-0000:normal,
successful completion”。

sqlerrm如何利用?
sqlcode和sqlerrm是未能够直接在sql语句被以,必须先行拿其给给变量后,才会以sql语句被采取,如下:

DECLARE 
  v_ename emp.ename%TYPE;
  e_norecord EXCEPTION;
  PRAGMA EXCEPTION_INIT (e_norecord, -20001);

  err_num NUMBER;
  err_msg VARCHAR2(100);

BEGIN

  SELECT ename INTO v_ename FROM emp WHERE empno=3000; 

EXCEPTION
  WHEN OTHERS THEN
      err_num := SQLCODE;
      err_msg := SUBSTR(SQLERRM, 1, 100);
      DBMS_OUTPUT.PUT_LINE(err_num||'----'||err_msg);
END;

运行结果:

anonymous block completed
100----ORA-01403: no data found

相关文章