0% found this document useful (0 votes)
4 views4 pages

PLSQL_Cursor_Interview_Questions

Uploaded by

sachinnayaka999
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
4 views4 pages

PLSQL_Cursor_Interview_Questions

Uploaded by

sachinnayaka999
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 4

PL/SQL Cursor Interview Questions & Answers

1. Implicit Cursor to Fetch Total Count of Employees in a Department


-------------------------------------------------------------------
DECLARE
v_department_id NUMBER := 10;
v_total_count NUMBER;
BEGIN
SELECT COUNT(*) INTO v_total_count
FROM employees
WHERE department_id = v_department_id;

DBMS_OUTPUT.PUT_LINE('Total Employees: ' || v_total_count);


END;
/

2. Explicit Cursor to Retrieve Employee Details


-----------------------------------------------
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, first_name, salary FROM employees;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO v_emp_id, v_emp_name, v_salary;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || v_emp_id || ', Name: ' || v_emp_name || ', Salary: ' || v_salary);
END LOOP;
CLOSE emp_cursor;
END;
/

3. Cursor Loop to Fetch and Print All Department Names


------------------------------------------------------
DECLARE
CURSOR dept_cursor IS SELECT department_name FROM departments;
v_dept_name departments.department_name%TYPE;
BEGIN
OPEN dept_cursor;
LOOP
FETCH dept_cursor INTO v_dept_name;
EXIT WHEN dept_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Department: ' || v_dept_name);
END LOOP;
CLOSE dept_cursor;
END;
/
4. Cursor FOR LOOP to Print Employee IDs and Salaries
-----------------------------------------------------
BEGIN
FOR rec IN (SELECT employee_id, salary FROM employees) LOOP
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || rec.employee_id || ', Salary: ' || rec.salary);
END LOOP;
END;
/

5. Cursor Fetching Records in Reverse Order Using ORDER BY


----------------------------------------------------------
DECLARE
CURSOR rev_cursor IS
SELECT employee_id, first_name FROM employees ORDER BY employee_id DESC;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
BEGIN
OPEN rev_cursor;
LOOP
FETCH rev_cursor INTO v_emp_id, v_emp_name;
EXIT WHEN rev_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || v_emp_id || ', Name: ' || v_emp_name);
END LOOP;
CLOSE rev_cursor;
END;
/

6. Using %FOUND and %NOTFOUND Attributes in an Explicit Cursor


--------------------------------------------------------------
DECLARE
CURSOR emp_cursor IS SELECT employee_id, salary FROM employees WHERE salary > 5000;
v_emp_id employees.employee_id%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO v_emp_id, v_salary;
EXIT WHEN emp_cursor%NOTFOUND;

IF emp_cursor%FOUND THEN
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || v_emp_id || ', Salary: ' || v_salary);
END IF;
END LOOP;
CLOSE emp_cursor;
END;
/

7. Cursor to Update Employee Salaries by 10% and Commit Changes


---------------------------------------------------------------
DECLARE
CURSOR emp_cursor IS SELECT employee_id, salary FROM employees;
v_emp_id employees.employee_id%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO v_emp_id, v_salary;
EXIT WHEN emp_cursor%NOTFOUND;

UPDATE employees SET salary = salary * 1.10 WHERE employee_id = v_emp_id;


END LOOP;
CLOSE emp_cursor;
COMMIT;

DBMS_OUTPUT.PUT_LINE('Salaries updated successfully.');


END;
/

8. Explicit Cursor with Parameters for Filtering Employee Data


-------------------------------------------------------------
DECLARE
CURSOR emp_cursor (p_dept_id NUMBER) IS
SELECT employee_id, first_name, salary FROM employees WHERE department_id = p_dept_id;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN emp_cursor(10);
LOOP
FETCH emp_cursor INTO v_emp_id, v_emp_name, v_salary;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || v_emp_id || ', Name: ' || v_emp_name || ', Salary: ' || v_salary);
END LOOP;
CLOSE emp_cursor;
END;
/

9. Fetch First 5 Records Using a Cursor


---------------------------------------
DECLARE
CURSOR emp_cursor IS SELECT employee_id, first_name FROM employees WHERE ROWNUM <= 5;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO v_emp_id, v_emp_name;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || v_emp_id || ', Name: ' || v_emp_name);
END LOOP;
CLOSE emp_cursor;
END;
/

10. Handling an Exception When No Records are Found


---------------------------------------------------
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, first_name FROM employees WHERE department_id = 9999;
v_emp_id employees.employee_id%TYPE;
v_emp_name employees.first_name%TYPE;
no_data_found_exception EXCEPTION;
PRAGMA EXCEPTION_INIT(no_data_found_exception, -1403);
BEGIN
OPEN emp_cursor;
FETCH emp_cursor INTO v_emp_id, v_emp_name;

IF emp_cursor%NOTFOUND THEN
RAISE no_data_found_exception;
ELSE
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || v_emp_id || ', Name: ' || v_emp_name);
END IF;

CLOSE emp_cursor;
EXCEPTION
WHEN no_data_found_exception THEN
DBMS_OUTPUT.PUT_LINE('No records found.');
END;
/

You might also like