Differenza tra cursore esplicito e cursore implicito

Differenza tra cursore esplicito e cursore implicito
Differenza tra cursore esplicito e cursore implicito

Video: Differenza tra cursore esplicito e cursore implicito

Video: Differenza tra cursore esplicito e cursore implicito
Video: WATERFALL E AGILE: CHE COSA SONO | Vita Da Founder 2024, Novembre
Anonim

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 SQL select 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 viene emessa un'istruzione Select in PL/SQL, quando non esiste un cursore definito in modo esplicito. I cursori espliciti, come suggerisce il nome, sono definiti esplicitamente dallo sviluppatore. In PL/SQL un cursore esplicito è in re altà una query denominata definita utilizzando il cursore della parola chiave.

Cos'è il cursore implicito?

I cursori impliciti vengono creati automaticamente e utilizzati da Oracle ogni volta che viene emessa un'istruzione select. Se viene utilizzato un cursore implicito, il sistema di gestione del database (DBMS) eseguirà automaticamente le operazioni di apertura, recupero e chiusura. I cursori impliciti devono essere utilizzati solo con istruzioni SQL che restituiscono una singola riga. Se l'istruzione SQL restituisce più di una riga, l'utilizzo di un cursore implicito introdurrà un errore. Un cursore implicito viene automaticamente associato a ciascuna istruzione Data Manipulation Language (DML), ovvero le istruzioni INSERT, UPDATE e DELETE. Inoltre, viene utilizzato un cursore implicito per elaborare le istruzioni SELECT INTO. Quando si recuperano i dati utilizzando i cursori impliciti, è possibile generare un'eccezione NO_DATA_FOUND quando l'istruzione SQL non restituisce dati. Inoltre, i cursori impliciti possono sollevare 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 considerato 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 sull'apertura, la chiusura e il recupero dei dati. Inoltre, è possibile recuperare più righe utilizzando un cursore esplicito. I cursori espliciti possono anche accettare parametri come qualsiasi funzione o procedura in modo che le variabili nel cursore possano essere modificate ogni volta che viene eseguito. Inoltre, i cursori espliciti consentono di recuperare un'intera riga in una variabile di record PL/SQL. Quando si utilizza un cursore esplicito, è necessario prima dichiararlo utilizzando un nome. È possibile accedere agli attributi del cursore utilizzando il nome assegnato al cursore. Dopo la dichiarazione, è necessario prima aprire il cursore. 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 cursore esplicito e cursore implicito

La principale differenza 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 emette un'istruzione select. Inoltre, è possibile recuperare più righe utilizzando cursori espliciti mentre i cursori impliciti possono recuperare solo una singola riga. Anche le eccezioni NO_DATA_FOUND e TOO_MANY_ROWS non vengono generate quando si utilizzano cursori espliciti, a differenza dei cursori impliciti. In sostanza, i cursori impliciti sono più vulnerabili agli errori di dati e forniscono un controllo programmatico inferiore rispetto ai cursori espliciti. Inoltre, i cursori impliciti sono considerati meno efficienti dei cursori espliciti.

Consigliato: