En implicit markör är en som skapas "automatiskt" åt dig av Oracle när du kör en fråga. Det är enklare att koda, men lider av
- ineffektivitet (ANSI-standarden anger att den måste hämta två gånger för att kontrollera om det finns mer än en post)
- sårbarhet för datafel (om du någonsin får två rader leder det till ett TOO_MANY_ROWS undantag)
Exempel
SELECT col INTO var FROM table WHERE something;
En explicit markör är en du skapar själv. Det krävs mer kod, men ger mer kontroll – till exempel kan du bara öppna-hämta-stäng om du bara vill ha den första posten och inte bryr dig om det finns andra.
Exempel
DECLARE
CURSOR cur IS SELECT col FROM table WHERE something;
BEGIN
OPEN cur;
FETCH cur INTO var;
CLOSE cur;
END;