Database
 sql >> Database >  >> RDS >> Database

Forti cursori di riferimento con tipo di dati di record basato su tabelle

Cursori di riferimento forti con tipo di dati di record basato su tabelle

Come abbiamo appreso nell'introduzione ai cursori di riferimento, esistono due tipi di cursori di riferimento PL/SQL in Oracle Database.

  1. Cursori di riferimento forti e
  2. Cursori di riferimento deboli

Esploreremo tutti i concetti di entrambi questi tipi di cursori di riferimento in questa serie. Con questo blog inizieremo con il primo che è il Strong Ref Cursors con tipo di dati record basato su tabelle e con tipo di dati record definito dall'utente.

Che cos'è PL/SQL Strong Ref Cursors in Oracle Database?

Un cursore di riferimento che ha un tipo restituito fisso è chiamato cursore di riferimento forte in Oracle Database. A causa del tipo di ritorno fisso, i cursori di riferimento forti possono essere utilizzati solo in modo selettivo. Ad esempio con quelle istruzioni SELECT che restituiscono il risultato il cui tipo di dati corrisponde a quello che hai corretto durante la dichiarazione del cursore.

Possiamo utilizzare Strong Ref Cursor con qualsiasi istruzione SELECT in Oracle Database?

No, non possiamo usare Strong Ref Cursori con nessuna istruzione SELECT. Ciò è dovuto al "Tipo di reso" fisso.

Tuttavia può essere utilizzato solo con quelle istruzioni SELECT che restituiscono il risultato il cui tipo di dati corrisponde alla "clausola di restituzione" del cursore.

Possiamo utilizzare qualsiasi tipo di dati PL/SQL per dichiarare il nostro cursore di riferimento forte?

No, non possiamo. Inoltre, il tipo restituito di un cursore di riferimento forte deve sempre essere un tipo di dati record. Può essere un tipo di dati di record basato su tabelle o un tipo di dati di record definito dall'utente.

Esempio di forti cursori di riferimento con tipo di dati di record basato su tabelle

Scriviamo un esempio. Qui creeremo un cursore di riferimento forte con tipo di dati di record basato su tabella.

 SET SERVEROUTPUT ON
 DECLARE
    	/*Create Ref Pointer Type*/
	TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;
	/*Create Cursor Variable*/
	cur_var my_RefCur;
	rec_var     employees%ROWTYPE;
 BEGIN
	OPEN cur_var FOR SELECT * FROM employees WHERE employee_id = 100;
	FETCH cur_var INTO rec_var;
	CLOSE cur_var;
	DBMS_OUTPUT.PUT_LINE ('Employee '||rec_var.first_name||' has salary '||rec_var.salary||'.');
END;
/

La creazione di un cursore di riferimento è un processo in due fasi.

Crea un tipo di puntatore di riferimento.

Per prima cosa dobbiamo creare un tipo di puntatore di riferimento. Pertanto, utilizzando l'istruzione TYPE creiamo un puntatore Ref Cursor Type proprio come nel codice sopra. In questa istruzione scrivi prima la parola chiave TYPE seguita dal nome del tuo cursore di riferimento. Successivamente devi scrivere una frase riservata IS REF CURSOR. Dirà al compilatore che stiamo creando un tipo che è REF CURSOR. A seguire devi specificare la clausola RETURN.

Ad esempio

TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;

Crea una variabile cursore

Nel secondo passaggio creiamo una variabile cursore. Per creare una variabile cursore devi prima scrivere il nome della tua variabile seguito dal nome del tuo cursore di riferimento. Successivamente questa variabile verrà utilizzata per fare riferimento al cursore di riferimento su cui è stata creata.

Ad esempio

cur_var my_RefCur;

Oltre alla variabile cursore nel codice sopra abbiamo anche una variabile extra. Questo è ancora una volta un tipo di dati di record basato su tabelle e progettato utilizzando la tabella "Impiegati". Inoltre questa variabile conterrà i dati prelevati dal cursore.

rec_var     employees%ROWTYPE;

Sezione di esecuzione

Nella sezione di esecuzione del nostro codice abbiamo quattro istruzioni eseguibili. Lascia che te li spieghi.

  1. Dichiarazione OPEN FOR

La prima istruzione è l'istruzione OPEN FOR. Associa l'istruzione SELECT alla variabile del cursore e apre il cursore per l'istruzione. Inoltre cerca anche tutte le risorse necessarie per elaborare l'istruzione SELECT.

  1. Dichiarazione FETCH

Come discusso nell'esercitazione PL/SQL 26. Il processo di recupero dei dati dal cursore è chiamato recupero. Pertanto qui stiamo recuperando i dati dal Ref Cursor nella variabile record 'Rec_Var'.

  1. Chiudi dichiarazione

Una volta che abbiamo finito con il nostro cursore, è consigliabile chiuderlo in modo che il nostro Oracle Engine / Server possa rinunciare a tutte le risorse ad esso associate. Questo è esattamente ciò che abbiamo fatto nella terza affermazione. Usando la parola chiave CHIUDI seguita dalla variabile cursore abbiamo chiuso il nostro cursore di riferimento.

  1. Dichiarazione di output

La quarta istruzione è un'istruzione DBMS_OUTPUT. Verrà visualizzato il nome e lo stipendio del dipendente con ID dipendente 100.

Puoi guardare il tutorial 33 PL/SQL per apprendere il funzionamento di una variabile record basata su tabelle.

Quindi in conclusione...

Nel codice sopra abbiamo creato un cursore di riferimento forte PL/SQL con il nome "my_RefCur" che restituirà un tipo di dati del record basato sulla tabella dei risultati. Inoltre, questo tipo di dati di record basato su tabella è supportato nella tabella Dipendenti dello schema HR. Quindi prima di eseguire questo programma dobbiamo assicurarci di essere collegati allo schema HR del nostro database.

Inoltre, se impari meglio guardando i video, eccone uno per te. Vai avanti e dai un'occhiata.

Questo è il tutorial su come creare cursori di riferimento PL/SQL forti utilizzando il tipo di dati di record basato su tabelle in Oracle Database. Spero che tu abbia imparato qualcosa di nuovo. Inoltre, assicurati di condividere questo blog sui tuoi social media con i tuoi amici.

Grazie della visita. Resta sintonizzato poiché nel prossimo tutorial impareremo come creare un forte cursore di riferimento con una variabile di record definita dall'utente.

Buona giornata!