Ein impliziter Cursor wird von Oracle "automatisch" für Sie erstellt, wenn Sie eine Abfrage ausführen. Es ist einfacher zu codieren, leidet aber unter
- Ineffizienz (der ANSI-Standard legt fest, dass zweimal abgerufen werden muss, um zu prüfen, ob mehr als ein Datensatz vorhanden ist)
- Anfälligkeit für Datenfehler (wenn Sie jemals zwei Zeilen erhalten, löst dies eine TOO_MANY_ROWS-Ausnahme aus)
Beispiel
SELECT col INTO var FROM table WHERE something;
Ein expliziter Cursor ist einer, den Sie selbst erstellen. Es erfordert mehr Code, bietet aber mehr Kontrolle - Sie können beispielsweise einfach öffnen, abrufen und schließen, wenn Sie nur den ersten Datensatz möchten und sich nicht darum kümmern, ob es noch andere gibt.
Beispiel
DECLARE
CURSOR cur IS SELECT col FROM table WHERE something;
BEGIN
OPEN cur;
FETCH cur INTO var;
CLOSE cur;
END;