Terug naar de beginpaginaCentor Homepage

Tips en Trucs

Gebruik een parameter om te verwijzen naar variabelen die  buiten de cursor zijn gedeclareerd.
Compliments of Steven Feuerstein, Pipeline SYSOP

Als je Cursor verwijst naar data binnen je programma (een locale variabele, een parameter, een global variabele e.d.), dan is het netter om die waarde als parameter door te geven aan de cursor, in plaats van er rechtstreeks naar verwijzen.
Door deze werkwijze te hanteren, worden je cursoren eenvoudiger te onderhouden en te debuggen. Je kan ook eenvoudiger dezelfde cursor gebruiken voor andere situaties.

In het volgende voorbeeld worden 2 cursoren gedefinieerd. Cursor C2 wordt aangeroepen met een parameter, in plaats van een directe verwijzing.
Deze is daardoor leesbaarder en eenvoudiger te onderhouden. (Bijvoorbeeld het wijzigen van v_name naar v_input_name vergt enkel aanpassingen in de declaratie en de aanroep van de cursor, niet in de SQL zelf).
C2 is ook eenvoudiger te hergebruiken (met cut-and-past minder kans op fouten).

CREATE PROCEDURE parameterized_cursor
(v_name IN VARCHAR, v_count OUT INTEGER)
AS
   CURSOR c1
   IS
      SELECT COUNT (*)
        FROM all_objects
       WHERE object_name = v_name
       OR owner = v_name;

   CURSOR c2 (name_in IN VARCHAR2)
   IS
      SELECT COUNT (*)
        FROM all_objects
       WHERE object_name = name_in
       OR owner = name_in;
BEGIN
   OPEN c1;

   FETCH c1
    INTO v_count;

   CLOSE c1;

   OPEN c2 (v_name);

   FETCH c2
    INTO v_count;

   CLOSE c2;
END;