Exceptions in PL/SQL Please use speaker notes for additional information!

Slides:



Advertisements
Similar presentations
Relational Database Example in Access - Order System Please use speaker notes for additional information!
Advertisements

PL/SQL User Defined Types Record and Table Please use speaker notes for additional information!
Reports Using SQL Script Please check speaker notes for additional information!
Order Entry System Please use speaker notes for additional information!
Group functions using SQL Additional information in speaker notes!
Relational example using donor, donation and drive tables For additional information see the speaker notes!
PL/SQL - Using IF statements Please use speaker notes for additional information!
More on IF statements Use speaker notes for additional information!
Chapter 4B: More Advanced PL/SQL Programming
PL/SQL Agenda: Basic PL/SQL block structure
Exception types In Oracle PL/SQL. Types of exceptions Named system exceptions –Raised as a result of an error in PL/SQL or RDBMS processing. Named programmer-defined.
Exception Handling in PL/SQL. POINTS TO DISCUSS What is Exception Handling Structure of Exception Handling Section Types of Exceptions.
PL/SQL block has the following structure: DECLARE Declaration statements BEGIN Executable statements EXCEPTION Exception-handling statements END ;
PL/SQL Bulk Collections in Oracle 9i and 10g Kent Crotty Burleson Consulting October 13, 2006.
SQL Use of Functions Character functions Please use speaker notes for additional information!
SQL functions - numeric and date Speaker notes contain additional information!
Bordoloi and Bock CURSORS. Bordoloi and Bock CURSOR MANIPULATION To process an SQL statement, ORACLE needs to create an area of memory known as the context.
Cursors in PL/SQL Includes cursor example and continuation of first cursor example Please use speaker notes for additional information!
PL / SQL P rocedural L anguage / S tructured Q uery L anguage Chapter 7 in Lab Reference.
Cursor and Exception Handling By Nidhi Bhatnagar.
Oracle10g Developer: PL/SQL Programming1 Objectives Manipulating data with cursors Managing errors with exception handlers Addressing exception-handling.
Chapter 4 Cursors and Exception Handling Oracle10g Developer:
Exceptions Oracle Database PL/SQL 10g Programming Chapter 7.
EE Copyright س Oracle Corporation, All rights reserved. ® Review of PL/SQL.
Lecture 4 PL/SQL language. PL/SQL – procedural SQL Allows combining procedural and SQL code PL/SQL code is compiled, including SQL commands PL/SQL code.
XML and DTD Please you speaker notes for additional information!
Examples dealing with cursors and tables Please use speaker notes for additional information!
CS178 Database Management PL/SQL session 8 References: ORACLE 9i PROGRAMMING A Primer Rajshekhar Sunderraman.
CSIT 313 DB PROGRAMMING EXCEPTION HANDLING. In PL/SQL, an error condition is called an exception. An exception can be either –internally defined (by the.
More on views Please refer to speaker notes for additional information!
SQL and Conditions Speaker notes will provide additional information!
Manipulating data within PL/SQL Please use speaker notes for additional information!
PL/SQL Oracle's Database Programming Language. Remember: Set serveroutput on With serveroutput off (default) executing procedure: With serveroutput on:
Trapping Oracle Server Exceptions. 2 home back first prev next last What Will I Learn? Describe and provide an example of an error defined by the Oracle.
PL/SQL Block Structure DECLARE - Optional Variables, cursors, user-defined exceptions BEGIN - Mandatory SQL Statements PL/SQL Statements EXCEPTIONS - Optional.
Oracle 8i Exception Handling. General Syntax DECLARE --- BEGIN --- EXCEPTION WHEN exception_name1 THEN -Error handling statements WHEN exception_name2.
Indexes in Oracle An Introduction Please check speaker notes for additional information!
Using SQL in PL/SQL ITEC 224 Database Programming.
PL/SQLPL/SQL Oracle11g: PL/SQL Programming Chapter 4 Cursors and Exception Handling.
Introduction to Oracle - SQL Additional information is available in speaker notes!
1 Handling Exceptions Part F. 2 Handling Exceptions with PL/SQL What is an exception? Identifier in PL/SQL that is raised during execution What is an.
Chapter 16 Cursors and Exceptions. Chapter Objectives  Determine when an explicit cursor is required  Declare, open, and close an explicit cursor 
More on Primary and Foreign Keys Please see speaker notes for additional information!
Chapter 18: Exception Handling1 Chapter Eighteen Exception Handling Objective: – Define exceptions – List types of exception handlers – Trap errors – Exception.
Handling Exceptions. Objectives What is exception Types of exceptions How to handle exceptions Trapping pre defined oracle errors.
Introduction to PL/SQL As usual, use speaker notes for additional information!
Copyright  Oracle Corporation, All rights reserved. 23 Handling Exceptions.
PHP with MYSQL Please use speaker notes for additional information!
More SQL functions As usual,there is additional information in the speaker notes!
CS422 Principles of Database Systems Oracle PL/SQL Chengyu Sun California State University, Los Angeles.
ITEC 224 Database Programming
CHAPTER 5 EXCEPTION HANDLING
Handling Exceptions.
Oracle11g: PL/SQL Programming Chapter 4 Cursors and Exception Handling.
More on Procedures (Internal/Local procedures)
Oracle9i Developer: PL/SQL Programming Chapter 3 PL/SQL Processing.
Handling Exceptions.
Database Programming PL SQL.
SQL PL/SQL Presented by: Dr. Samir Tartir
Introduction to Procedures
MySQL - Creating donorof database offline
Introduction to Functions
Advanced PL/SQL Programing
Please use speaker notes for additional information!
Handling Exceptions.
Handling Exceptions.
Database Management Systems 2
Handling Exceptions.
This shows the tables that I made for the order system.
More and Still More on Procedures and Functions
Presentation transcript:

Exceptions in PL/SQL Please use speaker notes for additional information!

Exceptions SET SERVEROUTPUT ON DECLARE v_idno VARCHAR2(5); v_yrgoal NUMBER(7,2); BEGIN SELECT idno, yrgoal INTO v_idno, v_yrgoal FROM donornew WHERE idno > 77777; IF v_yrgoal > 250 THEN v_yrgoal := v_yrgoal * 1.1; END IF; UPDATE donornew SET yrgoal = v_yrgoal WHERE idno = v_idno; EXCEPTION WHEN TOO_MANY_ROWS THEN dbms_output.put_line('Multiple rows meet criteria'); WHEN NO_DATA_FOUND THEN dbms_output.put_line('Not a valid id #'); WHEN OTHERS THEN dbms_output.put_line('Undefined error occurred); END; / SET SERVEROUTPUT OFF SQL> edit preexcep1 There are no records with an id > so the no rows found error is returned and processed.

preexcep1 Not a valid id # PL/SQL procedure successfully completed. output EXCEPTION WHEN TOO_MANY_ROWS THEN dbms_output.put_line('Multiple rows meet criteria'); WHEN NO_DATA_FOUND THEN dbms_output.put_line('Not a valid id #'); WHEN OTHERS THEN dbms_output.put_line('Undefined error occurred); END;

SQL> edit preexcep1x SET SERVEROUTPUT ON DECLARE v_idno VARCHAR2(5); v_yrgoal NUMBER(7,2); BEGIN SELECT idno, yrgoal INTO v_idno, v_yrgoal FROM donornew WHERE idno > 77777; IF v_yrgoal > 250 THEN v_yrgoal := v_yrgoal * 1.1; END IF; UPDATE donornew SET yrgoal = v_yrgoal WHERE idno = v_idno; /* The exception routine has been turned into a comment. EXCEPTION WHEN TOO_MANY_ROWS THEN dbms_output.put_line('Multiple rows meet criteria'); WHEN NO_DATA_FOUND THEN dbms_output.put_line('Not a valid id #'); WHEN OTHERS THEN dbms_output.put_line('Undefined error occured'); */ END; / SET SERVEROUTPUT OFF Without exception preexcep1x DECLARE * ERROR at line 1: ORA-01403: no data found ORA-06512: at line 5

SET SERVEROUTPUT ON DECLARE v_idno VARCHAR2(5); v_yrgoal NUMBER(7,2); BEGIN SELECT idno, yrgoal INTO v_idno, v_yrgoal FROM donornew WHERE idno < 77777; IF v_yrgoal > 250 THEN v_yrgoal := v_yrgoal * 1.1; END IF; UPDATE donornew SET yrgoal = v_yrgoal WHERE idno = v_idno; EXCEPTION WHEN TOO_MANY_ROWS THEN dbms_output.put_line('Multiple rows meet criteria'); WHEN NO_DATA_FOUND THEN dbms_output.put_line('Not a valid id #'); WHEN OTHERS THEN dbms_output.put_line('Undefined error occured'); END; / SET SERVEROUTPUT OFF SQL> edit preexcep1a Multiple records error preexcep1a Multiple rows meet criteria PL/SQL procedure successfully completed.

SQL> SELECT * FROM ordline; ORDNO ITEM NUMORD SQL> SELECT * FROM orderz; ORDNO CUSTI ORDATE JUN JUN JUN JUL-99 Oracle error - not predefined SET SERVEROUTPUT ON DECLARE v_ordno ordline.ordno%TYPE :='123456' ; v_itemno ordline.itemno%TYPE :='1212'; v_numord ordline.numord%TYPE :=100; BEGIN INSERT INTO ordline VALUES(v_ordno, v_itemno, v_numord); END; / SET SERVEROUTPUT OFF SQL> edit nonpreex1x nonpreex1x DECLARE * ERROR at line 1: ORA-02291: integrity constraint (SCOTT.ORDNO_FK) violated - parent key not found ORA-06512: at line 6

SET SERVEROUTPUT ON DECLARE e_invalid_ordno EXCEPTION; PRAGMA EXCEPTION_INIT(e_invalid_ordno, -2291); v_ordno ordline.ordno%TYPE :='123456' ; v_itemno ordline.itemno%TYPE :='1212'; v_numord ordline.numord%TYPE :=100; BEGIN INSERT INTO ordline VALUES(v_ordno, v_itemno, v_numord); EXCEPTION WHEN e_invalid_ordno THEN dbms_output.put_line('Foreign key problem - no ordno on ORDERZ'); WHEN OTHERS THEN dbms_output.put_line('Undefined error occured'); END; / SET SERVEROUTPUT OFF SQL> edit nonpreex1 Exception for non predefined error nonpreex1 Foreign key problem - no ordno on ORDERZ PL/SQL procedure successfully completed.

User defined SET SERVEROUTPUT ON DECLARE e_numord_over200 EXCEPTION; v_ordno ordline.ordno%TYPE :='000003' ; v_itemno ordline.itemno%TYPE :='1212'; v_numord ordline.numord%TYPE :=300; BEGIN IF v_numord > 200 THEN RAISE e_numord_over200; END IF; INSERT INTO ordline VALUES(v_ordno, v_itemno, v_numord); EXCEPTION WHEN e_numord_over200 THEN dbms_output.put_line('NUMORD EXCEEDS USER RANGE ERROR'); WHEN OTHERS THEN dbms_output.put_line('Undefined error occured'); END; / SET SERVEROUTPUT OFF SQL> edit userexcep1 userexcep1 NUMORD EXCEEDS USER RANGE ERROR PL/SQL procedure successfully completed.

SQL> CREATE TABLE test_ordline 2 (ordno VARCHAR2(6), 3 itemno VARCHAR2(4), 4 numord NUMBER(3) CONSTRAINT valid_numord_ch CHECK (numord <= 200)); constraint SQL> edit userexcep2 userexcep2 Error occurred PL/SQL procedure successfully completed. SQL> SELECT * FROM test_ordline; no rows selected SET SERVEROUTPUT ON DECLARE v_ordno ordline.ordno%TYPE :='000003' ; v_itemno ordline.itemno%TYPE :='1212'; v_numord ordline.numord%TYPE :=300; BEGIN INSERT INTO test_ordline VALUES(v_ordno, v_itemno, v_numord); EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Error occurred); END; / SET SERVEROUTPUT OFF

userexcep2a Error ORA-02290: check constraint (SCOTT.VALID_NUMORD_CH) violated PL/SQL procedure successfully completed. SQL> edit userexcep2a Constraint - version 2 SET SERVEROUTPUT ON DECLARE v_err_code NUMBER; v_err_msg VARCHAR2(255); v_ordno ordline.ordno%TYPE :='000003' ; v_itemno ordline.itemno%TYPE :='1212'; v_numord ordline.numord%TYPE :=300; BEGIN INSERT INTO test_ordline VALUES(v_ordno, v_itemno, v_numord); EXCEPTION WHEN OTHERS THEN v_err_code:= SQLCODE; v_err_msg := SQLERRM; dbms_output.put_line('Error '||TO_CHAR(v_err_code)||' '||v_err_msg); END; / SET SERVEROUTPUT OFF

Constraint - version 3 SQL> edit userexcep2b userexcep2b Constraint problem - numord > 200 PL/SQL procedure successfully completed. SET SERVEROUTPUT ON DECLARE e_invalid_numord EXCEPTION; PRAGMA EXCEPTION_INIT(e_invalid_numord, -2290); v_err_code NUMBER; v_err_msg VARCHAR2(255); v_ordno ordline.ordno%TYPE :='000003' ; v_itemno ordline.itemno%TYPE :='1212'; v_numord ordline.numord%TYPE :=300; BEGIN INSERT INTO test_ordline VALUES(v_ordno, v_itemno, v_numord); EXCEPTION WHEN e_invalid_numord THEN dbms_output.put_line('Constraint problem - numord > 200'); WHEN OTHERS THEN v_err_code:= SQLCODE; v_err_msg := SQLERRM; dbms_output.put_line('Error '||TO_CHAR(v_err_code)||' '||v_err_msg); END; / SET SERVEROUTPUT OFF

SET SERVEROUTPUT ON DECLARE e_numord_over200 EXCEPTION; v_err_code NUMBER; v_err_msg VARCHAR2(255); v_ordno ordline.ordno%TYPE :='500003' ; v_itemno ordline.itemno%TYPE :='1212'; v_numord ordline.numord%TYPE :=200; BEGIN IF v_numord > 200 THEN RAISE e_numord_over200; END IF; INSERT INTO ordline VALUES(v_ordno, v_itemno, v_numord); EXCEPTION WHEN e_numord_over200 THEN dbms_output.put_line('NUMORD EXCEEDS USER RANGE ERROR'); WHEN OTHERS THEN v_err_code:= SQLCODE; v_err_msg := SQLERRM; dbms_output.put_line('Undefined error '||TO_CHAR(v_err_code)||' '||v_err_msg); END; / SET SERVEROUTPUT OFF SQL> edit funcexcep1 funcexcep1 Undefined error ORA-02291: integrity constraint (SCOTT.ORDNO_FK) violated - parent key not found PL/SQL procedure successfully completed.

LOOP SQL> edit testexception SET SERVEROUTPUT ON DECLARE e_yrgoal_less100 EXCEPTION; v_idno donortest.idno%TYPE; v_name donortest.name%TYPE; v_yrgoal donortest.yrgoal%TYPE; CURSOR c_donor IS SELECT idno, name, yrgoal FROM donortest; BEGIN OPEN c_donor; LOOP FETCH c_donor INTO v_idno, v_name, v_yrgoal; EXIT WHEN c_donor%NOTFOUND; IF v_yrgoal < 100 THEN RAISE e_yrgoal_less100; END IF; dbms_output.put_line('Row processed: '|| v_name); END LOOP; EXCEPTION WHEN e_yrgoal_less100 THEN dbms_output.put_line(‘YRGOAL < 100 ERROR’); WHEN OTHERS THEN dbms_output.put_line('Undefined error occurred); END; / SET SERVEROUTPUT OFF

SQL> select * from donortest; IDNO NAME STADR CITY ST ZIP DATEFST YRGOAL CONTACT Stephen Daniels 123 Elm St Seekonk MA JUL Amy Costa Jennifer Ames 24 Benefit St Providence RI MAY Susan Jones Carl Hersey 24 Benefit St Providence RI JAN Susan Jones Susan Ash 21 Main St Fall River MA MAR Amy Costa Nancy Taylor 26 Oak St Fall River MA MAR John Adams Robert Brooks 36 Pine St Fall River MA APR Amy Costa Alice Riley 123 Elm Chicago IL DEC John Adams Jim Ryan 12 Elm St. Hingham MA AUG Amy Costa LOOP testexception Row processed: Stephen Daniels Row processed: Jennifer Ames Row processed: Carl Hersey Row processed: Susan Ash YRGOAL < 100 ERROR PL/SQL procedure successfully completed.