w3resource

Handling NO_DATA_NEEDED exception in PL/SQL

PL/SQL Exception Handling: Exercise-16 with Solution

Handle the NO_DATA_NEEDED exception when a query retrieves more data than required.

Sample Solution:

Table: employees

employee_id		integer
first_name		varchar(25)
last_name		varchar(25)
email			archar(25)
phone_number		varchar(15)
hire_date		date
job_id			varchar(25)
salary			integer
commission_pct		decimal(5,2)
manager_id		integer
department_id		integer

PL/SQL Code:

DECLARE
v_employee_idemployees.employee_id%TYPE;
v_first_nameemployees.first_name%TYPE;
v_last_nameemployees.last_name%TYPE;
  CURSOR employee_cursor IS
    SELECT employee_id, first_name, last_name
    FROM employees;
BEGIN
  OPEN employee_cursor;
  LOOP
    FETCH employee_cursor INTO v_employee_id, v_first_name, v_last_name;
    DBMS_OUTPUT.PUT_LINE(v_employee_id || ' - ' || v_first_name || ' ' || v_last_name);
    IF employee_cursor%NOTFOUND THEN
      RAISE NO_DATA_NEEDED;
    END IF;
  END LOOP;
EXCEPTION
  WHEN NO_DATA_NEEDED THEN
    DBMS_OUTPUT.PUT_LINE('Caught NO_DATA_NEEDED exception: More data retrieved than required.');
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
END;
/;

Sample Output:

……….
……….
201 - Michael Hartstein
202 - Pat Fay 
203 - Susan Mavris
204 - Hermann Baer 
205 - Shelley Higgins 
206 - William Gietz
206 - William Gietz
Caught NO_DATA_NEEDED exception: More data retrieved than required.

Explanation:

The said code in Oracle's PL/SQL that demonstrates how to handle the NO_DATA_NEEDED exception in the context of a cursor, specifically when more data is retrieved than necessary.

The three variables v_employee_id, v_first_name, and v_last_name of type employee_id, first_name, and last_name respectively in the employees table are declared and also declares a cursor employee_cursor that selects the employee_id, first_name, and last_name from the employees table.

Inside the block, the cursor opens and enters a loop, and each iteration of the loop, it fetches data from the cursor into the declared variables and outputs the employee ID, first name, and last name using DBMS_OUTPUT.PUT_LINE.

If the cursor reaches the end of the result set and no more data is available, in that cases, the code raises the NO_DATA_NEEDED exception, and the exception handling section, outputs a message indicating that more data was retrieved than required.

Flowchart:

Flowchart: PL/SQL Exception Handling Exercises - Handling NO_DATA_NEEDED exception in PL/SQL

Previous: Handling ACCESS_INTO_NULL exception in PL/SQL.

What is the difficulty level of this exercise?



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/plsql-exercises/exception-handling/plsql-exception-handling-exercise-16.php