Oracle PL / SQL: cursori impliciti vs cursori espliciti

PL / SQL emette un cursore implicito ogni volta che si esegue un’istruzione SQL direttamente nel codice, fintanto che il codice non utilizza un cursore esplicito. Si chiama un cursore “implicito”, perché non si dichiara esplicitamente un cursore per l’istruzione SQL.
Se si utilizza un cursore implicito, Oracle apre, recupera, e chiude in modo automatico; queste azioni sono al di fuori del vostro controllo programmato. È possibile, tuttavia, ottenere informazioni circa l’istruzione SQL di più recente esecuzione esaminando i valori in SQL , come spiegato più avanti in questo capitolo.
Cursore implicito è più semplice di codice, ma pecca di:

  • inefficienza (lo standard ANSI specifica che deve recuperare due volte per verificare se vi è più di una
    disco)
  • vulnerabilità agli errori dei dati (se mai due file, solleva un’eccezione TOO_MANY_ROWS)

Esempio di cursore implicito:
SELECT col INTO var FROM tabella WHERE … ..;
Un cursore esplicito è un’istruzione SELECT che è esplicitamente definita nella sezione di dichiarazione del codice e, nel processo, assegnato un nome. Non esiste una cosa come un cursore esplicito UPDATE, DELETE e INSERT.
Con cursori espliciti, si ha il controllo completo su come accedere alle informazioni nel database. Siete voi a decidere quando aprire il cursore, quando FETCH record dal cursore (e quindi dalla tabella o le tabelle nell’istruzione SELECT del cursore) quanti record per andare a prendere, e quando chiudere il cursore.
Informazioni sullo stato attuale del cursore è disponibile attraverso l’esame degli attributi del cursore.
Questa granularità di controllo rende cursore esplicito uno strumento prezioso per il vostro sforzo di sviluppo.
Esempio:
DICHIARARE
   CURSORE cur è selezionare col FROM tabella WHERE …;
INIZIO
   Cur APERTO;
   FETCH cur IN var;
   Cur CLOSE;
FINE;

Potrebbero interessarti anche...