Een impliciete cursor is een cursor die "automatisch" voor u wordt gemaakt door Oracle wanneer u een query uitvoert. Het is eenvoudiger te coderen, maar heeft last van
- inefficiëntie (de ANSI-standaard specificeert dat het twee keer moet worden opgehaald om te controleren of er meer dan één record is)
- kwetsbaarheid voor gegevensfouten (als u ooit twee rijen krijgt, ontstaat er een TOO_MANY_ROWS-uitzondering)
Voorbeeld
SELECT col INTO var FROM table WHERE something;
Een expliciete cursor is er een die u zelf maakt. Er is meer code voor nodig, maar het geeft meer controle - u kunt bijvoorbeeld gewoon openen, ophalen en sluiten als u alleen het eerste record wilt en het niet uitmaakt of er andere zijn.
Voorbeeld
DECLARE
CURSOR cur IS SELECT col FROM table WHERE something;
BEGIN
OPEN cur;
FETCH cur INTO var;
CLOSE cur;
END;