Thursday, June 29, 2017

PL/SQL: Simple cursors for example

Here a very basic demonstration of a PL/SQL program that updates data from a table. It uses an explicit cursor for loop:

The program is based on the EMPLOYEES table in HR Schema.

DECLARE

  CURSOR C1 IS 
  SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID = 60 
  FOR UPDATE;

BEGIN

  SAVEPOINT TX_START;

  FOR RC IN C1 LOOP

    DBMS_OUTPUT.PUT_LINE('Fetching record ' || RC.LAST_NAME);

    IF RC.SALARY > 5000 THEN
      UPDATE EMPLOYEES SET SALARY = SALARY*1.1 WHERE CURRENT OF C1;
    END IF;

  END LOOP;

  EXCEPTION

  WHEN OTHERS THEN
    ROLLBACK TO TX_START;
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
    RAISE;

END;
/