1 / 18

Handling Exceptions

Handling Exceptions. Part F. Handling Exceptions with PL/SQL. What is an exception? Identifier in PL/SQL that is raised during execution How is it raised? An Oracle error occurs.

rwallace
Download Presentation

Handling Exceptions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Handling Exceptions Part F

  2. Handling Exceptions with PL/SQL • What is an exception?Identifier in PL/SQL that is raised during execution • How is it raised? • An Oracle error occurs. • For example, if the error ORA-01403 occurs when no rows are retrieved from the database in a SELECT statement, then PL/SQL raises the exception NO_DATA_FOUND. • You raise it explicitly. • The exception being raised may be either user defined or predefined. • How do you handle it? • Trap it with a handler.

  3. Trap the exception If the exception is raised in the executable section of the block and there is no corresponding exception handler, the PL/SQL block terminates with failure and the exception is propagated to the calling environment. DECLARE BEGIN EXCEPTION END; Handling Exceptions Exception is raised Exception is trapped

  4. } Implicitly raised Exception Types • Predefined Oracle Server • Non-predefined Oracle Server • User-defined Explicitly raised

  5. Predefined Exceptions • Most common errors that occur in programs • PL/SQL language: • Assigns exception name • Provides built-in exception handler for each predefined exception • System automatically displays error message informing user of nature of problem • Can create exception handlers to display alternate error messages

  6. Trapping Exceptions • Syntax EXCEPTION WHEN exception1 [OR exception2 . . .] THEN statement1; statement2; . . . [WHEN exception3 [OR exception4 . . .] THEN statement1; statement2; . . .] [WHEN OTHERS THEN statement1; statement2; . . .]

  7. Trapping Exceptions Guidelines • WHEN OTHERS is the last clause. • EXCEPTION keyword starts exception-handling section. • Several exception handlers are allowed. • Only one handler is processed before leaving the block. • You can have at most one OTHERS clause. • Exceptions cannot appear in assignment statements or SQL statements.

  8. Trapping Predefined Oracle Server Errors • Common errors that have been given predefined names • Reference the standard name in the exception-handling routine. • Sample predefined exceptions:

  9. Predefined Exception • Syntax BEGIN EXCEPTION WHEN NO_DATA_FOUND THEN statement1; statement2; WHEN TOO_MANY_ROWS THEN statement1; WHEN OTHERS THEN statement1; statement2; statement3; END;

  10. Undefined Exceptions • Less common errors • Do not have predefined names • Must explicitly declare exception in program’s declaration section • Associate new exception with specific Oracle error code • Create exception handler in exception section • Using same syntax as for predefined exceptions

  11. Declare Associate Reference Trapping Non-Predefined Oracle Server Errors Less-common errors that have not been given predefined names Declarative section Exception-handling section • Name the exception • Code the PRAGMA EXCEPTION_INIT • Handle the raised exception

  12. e_emps_remaining EXCEPTION; PRAGMA EXCEPTION_INIT ( e_emps_remaining, -2292); e_emps_remaining Non-Predefined Error • Trap for Oracle Server error number –2292, an integrity constraint violation. DECLARE e_emps_remaining EXCEPTION; PRAGMA EXCEPTION_INIT ( e_emps_remaining, -2292); v_deptno dept.deptno%TYPE := &p_deptno; BEGIN DELETE FROM dept WHERE deptno = v_deptno; COMMIT; EXCEPTION WHEN e_emps_remaining THEN DBMS_OUTPUT.PUT_LINE ('Cannot remove dept ' || TO_CHAR(v_deptno) || '. Employees exist. '); END; 1 2 3

  13. Functions for Trapping Exceptions • SQLCODEReturns the numeric value for the error code • SQLERRMReturns the message associated with the error number

  14. SQLCODE SQLERRM Functions for Trapping Exceptions • Example DECLARE v_error_code NUMBER; v_error_message VARCHAR2(255); BEGIN ... EXCEPTION ... WHEN OTHERS THEN ROLLBACK; v_error_code := SQLCODE ; v_error_message := SQLERRM ; INSERT INTO errors VALUES(v_error_code, v_error_message); END;

  15. User-defined Exceptions • Do not raise Oracle runtime error • Require exception handling to • Enforce business rules • Ensure integrity of database

  16. Declare Raise Reference • Name the exception • Explicitly raise the exception by using the RAISE statement • Handle the raised exception Trapping User-Defined Exceptions Declarative section Executable section Exception-handling section

  17. e_invalid_product EXCEPTION; RAISE e_invalid_product; e_invalid_product User-Defined Exception Example DECLARE e_invalid_product EXCEPTION; BEGIN UPDATE product SET descrip = '&product_description' WHERE prodid = &product_number; IF SQL%NOTFOUND THEN RAISE e_invalid_product; END IF; COMMIT; EXCEPTION WHEN e_invalid_product THEN DBMS_OUTPUT.PUT_LINE('Invalid product number.'); END; 1 2 3

  18. General Syntax for Declaring, Raising, and Handling a User-defined Exception

More Related