Mega Code Archive

 
Categories / Oracle PLSQL / Cursor
 

NO_DATA_FOUND vs %NOTFOUND

SQL> SQL> SQL> CREATE TABLE place (   2    room_id          NUMBER(5) PRIMARY KEY,   3    building         VARCHAR2(15),   4    room_number      NUMBER(4),   5    number_seats     NUMBER(4),   6    description      VARCHAR2(50)   7    ); Table created. SQL> SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)   2             VALUES (20001, 'Building 7', 201, 1000, 'Large Lecture Hall'); 1 row created. SQL> SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)   2             VALUES (20002, 'Building 6', 101, 500, 'Small Lecture Hall'); 1 row created. SQL> SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)   2             VALUES (20003, 'Building 6', 150, 50, 'Discussion Room A'); 1 row created. SQL> SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)   2             VALUES (20004, 'Building 6', 160, 50, 'Discussion Room B'); 1 row created. SQL> SQL> INSERT INTO place (room_id, building, room_number, number_seats,description)   2             VALUES (20005, 'Building 6', 170, 50, 'Discussion Room C'); 1 row created. SQL> SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)   2             VALUES (20006, 'Music Building', 100, 10, 'Music Practice Room'); 1 row created. SQL> SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)   2             VALUES (20007, 'Music Building', 200, 1000, 'Concert Room'); 1 row created. SQL> SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)   2             VALUES (20008, 'Building 7', 300, 75, 'Discussion Room D'); 1 row created. SQL> SQL> INSERT INTO place (room_id, building, room_number, number_seats,description)   2             VALUES (20009, 'Building 7', 310, 50, 'Discussion Room E'); 1 row created. SQL> SQL> SQL> CREATE TABLE MyTable (   2    num_col    NUMBER,   3    char_col   VARCHAR2(60)   4    ); CREATE TABLE MyTable (              * ERROR at line 1: ORA-00955: name is already used by an existing object SQL> SQL> SQL> DECLARE   2    v_RoomData   place%ROWTYPE;   3  BEGIN   4    SELECT *   5      INTO v_RoomData   6      FROM place   7      WHERE room_id = -1;   8   9    IF SQL%NOTFOUND THEN  10      INSERT INTO MyTable (char_col)  11        VALUES ('Not found!');  12    END IF;  13  EXCEPTION  14    WHEN NO_DATA_FOUND THEN  15      INSERT INTO MyTable (char_col)  16        VALUES ('Not found, exception handler');  17  END;  18  / PL/SQL procedure successfully completed. SQL> SQL> select * from MyTable;    NUM_COL CHAR_COL ---------- ------------------------------------------------------------            Not found, exception handler SQL> SQL> drop table MyTable; Table dropped. SQL> SQL> drop table place; Table dropped. SQL> SQL>