Cursore esplicito vs cursore implicito
Quando si tratta di database, un cursore è una struttura di controllo che consente di attraversare i record in un database. Un cursore fornisce un meccanismo per assegnare un nome a un'istruzione di selezione SQL e quindi può essere utilizzato per manipolare le informazioni all'interno di tale istruzione SQL. I cursori impliciti vengono creati e utilizzati automaticamente ogni volta che un'istruzione Select viene rilasciata in PL / SQL, quando non esiste un cursore esplicitamente definito. I cursori espliciti, come suggerisce il nome, sono definiti esplicitamente dallo sviluppatore. In PL / SQL un cursore esplicito è in realtà una query denominata definita utilizzando il cursore parola chiave.
Cos'è il cursore implicito?
I cursori impliciti vengono creati e utilizzati automaticamente da Oracle ogni volta che viene emessa un'istruzione select. Se viene utilizzato un cursore implicito, il Database Management System (DBMS) eseguirà automaticamente le operazioni di apertura, recupero e chiusura. I cursori impliciti dovrebbero essere utilizzati solo con istruzioni SQL che restituiscono una singola riga. Se l'istruzione SQL restituisce più di una riga, l'uso di un cursore implicito introdurrà un errore. Un cursore implicito viene automaticamente associato a ciascuna istruzione DML (Data Manipulation Language), ovvero le istruzioni INSERT, UPDATE e DELETE. Inoltre, un cursore implicito viene utilizzato per elaborare le istruzioni SELECT INTO. Quando si recuperano i dati utilizzando i cursori impliciti, NO_DATA_FOUND può essere sollevata quando l'istruzione SQL non restituisce alcun dato. Inoltre, i cursori impliciti possono generare eccezioni TOO_MANY_ROWS quando l'istruzione SQL restituisce più di una riga.
Cos'è il cursore esplicito?
Come accennato in precedenza, i cursori espliciti sono query definite utilizzando un nome. Un cursore esplicito può essere pensato come un puntatore a un set di record e il puntatore può essere spostato in avanti all'interno del set di record. I cursori espliciti forniscono all'utente il controllo completo sui dati di apertura, chiusura e recupero. Inoltre, più righe possono essere recuperate utilizzando un cursore esplicito. I cursori espliciti possono anche prendere parametri come qualsiasi funzione o procedura in modo che le variabili nel cursore possano essere modificate ogni volta che viene eseguita. Inoltre, i cursori espliciti consentono di recuperare un'intera riga in una variabile di record PL / SQL. Quando si utilizza un cursore esplicito, per prima cosa deve essere dichiarato utilizzando un nome. È possibile accedere agli attributi del cursore usando il nome dato al cursore. Dopo aver dichiarato, il cursore deve essere aperto per primo. Quindi è possibile avviare il recupero. Se è necessario recuperare più righe, l'operazione di recupero deve essere eseguita all'interno di un ciclo. Infine, il cursore deve essere chiuso.
Differenza tra il cursore esplicito e il cursore implicito
La differenza principale tra il cursore implicito e il cursore esplicito è che un cursore esplicito deve essere definito esplicitamente fornendo un nome mentre i cursori impliciti vengono creati automaticamente quando si rilascia un'istruzione select. Inoltre, è possibile recuperare più righe utilizzando cursori espliciti, mentre i cursori impliciti possono solo recuperare una singola riga. Anche le eccezioni NO_DATA_FOUND e TOO_MANY_ROWS non vengono generate quando si utilizzano cursori espliciti, al contrario di cursori impliciti. In sostanza, i cursori impliciti sono più vulnerabili agli errori dei dati e forniscono un controllo meno programmatico rispetto ai cursori espliciti. Inoltre, i cursori impliciti sono considerati meno efficienti dei cursori espliciti.