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