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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM