0% found this document useful (0 votes)
18 views

CH07 1

This document contains multiple examples of using cursors in PL/SQL to iterate through recordsets from a database table. The examples demonstrate declaring cursors, opening and closing them, fetching records into variables, and using cursors with parameters and for update clauses. Loops are used to iterate through the recordsets and output or modify the data.

Uploaded by

Mohammad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

CH07 1

This document contains multiple examples of using cursors in PL/SQL to iterate through recordsets from a database table. The examples demonstrate declaring cursors, opening and closing them, fetching records into variables, and using cursors with parameters and for update clauses. Loops are used to iterate through the recordsets and output or modify the data.

Uploaded by

Mohammad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

DECLARE

v_employee_id employees.employee_id%TYPE;
v_last_name employees.last_name%TYPE;
CURSOR employees_Cursor IS
SELECT employee_id, last_name
FROM employees;
BEGIN
OPEN employees_cursor;
FOR i IN 1..10 LOOP
FETCH employees_cursor
INTO v_employee_id, v_last_name;
DBMS_OUTPUT.PUT_LINE (TO_CHAR (v_employee_id) ||' ' || v_last_name);
END LOOP;
CLOSE employees_cursor;
END ;
-----------------------------------------------------------------------------------
-------
DECLARE
v_employee_id employees.employee_id%TYPE;
v_last_name employees.last_name%TYPE;
CURSOR employees_Cursor IS
SELECT employee_id, last_name
FROM employees;
BEGIN
IF NOT employees_cursor%ISOPEN THEN
OPEN employees_cursor;
END IF;
LOOP
FETCH employees_cursor
INTO v_employee_id, v_last_name;
DBMS_OUTPUT.PUT_LINE (TO_CHAR (v_employee_id) ||' ' || v_last_name);
-- EXIT WHEN employees_cursor%ROWCOUNT > 10;
EXIT WHEN employees_cursor%NOTFOUND;
END LOOP;
CLOSE employees_cursor;
END ;
-----------------------------------------------------------------------------------
------
DECLARE
CURSOR employees_cursor IS
SELECT employee_id, last_name
FROM employees;
employees_record employees_cursor%ROWTYPE;
BEGIN
IF NOT employees_cursor%ISOPEN THEN
OPEN employees_cursor;
END IF;
LOOP
FETCH employees_cursor
INTO employees_record;
DBMS_OUTPUT.PUT_LINE (TO_CHAR (employees_record.employee_id) ||' ' ||
employees_record.last_name);
EXIT WHEN employees_cursor%ROWCOUNT > 10;
END LOOP;
CLOSE employees_cursor;
END ;
-----------------------------------------------------------------------------------
------------------
DECLARE
CURSOR employees_cursor IS
SELECT employee_id, last_name
FROM employees;
BEGIN
FOR employees_record IN employees_cursor LOOP
DBMS_OUTPUT.PUT_LINE (TO_CHAR (employees_record.employee_id) ||' ' ||
employees_record.last_name);
EXIT WHEN employees_cursor%ROWCOUNT > 10;
END LOOP;
END ;
-----------------------------------------------------------------------------------
--------

BEGIN
FOR employees_record IN
(SELECT employee_id, last_name
FROM employees)
LOOP
DBMS_OUTPUT.PUT_LINE (TO_CHAR (employees_record.employee_id) ||' ' ||
employees_record.last_name);
END LOOP;
END ;
-----------------------------------------------------------------------------------
-----------
DECLARE
CURSOR employees_cursor
(p_deptno NUMBER, p_job VARCHAR2)IS
SELECT employee_id, last_name
FROM employees
WHERE department_id = p_deptno
AND job_id = p_job;
employees_record employees_cursor%ROWTYPE;
BEGIN
OPEN employees_cursor(80,'SA_REP');
LOOP
FETCH employees_cursor
INTO employees_record;
DBMS_OUTPUT.PUT_LINE (TO_CHAR (employees_record.employee_id) ||' ' ||
employees_record.last_name);
EXIT WHEN employees_cursor%NOTFOUND;
END LOOP;
CLOSE employees_cursor;
OPEN employees_cursor(60, 'IT_PROG');
LOOP
FETCH employees_cursor
INTO employees_record;
DBMS_OUTPUT.PUT_LINE (TO_CHAR (employees_record.employee_id) ||' ' ||
employees_record.last_name);
EXIT WHEN employees_cursor%NOTFOUND ;
END LOOP;
CLOSE employees_cursor;
END ;
-----------------------------------------------------------------------------------
---
DECLARE
CURSOR employees_cursor IS
SELECT e.employee_id, e.last_name,e.salary, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND e.department_id = 60
FOR UPDATE OF salary NOWAIT;
BEGIN
FOR emp_record IN employees_cursor
LOOP
IF emp_record.salary < 5000 THEN
UPDATE employees
SET salary = emp_record.salary * 1.10
WHERE CURRENT OF employees_cursor;
END IF;
END LOOP;
END ;
/

You might also like