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

Come creare una variabile del tipo di dati del record definita dall'utente nel database Oracle

Finora abbiamo visto come creare variabili di tipo di dati di record basate su tabella e basate su cursore. Quello che rimane è il tipo di dati del record definito dall'utente che tratteremo nel tutorial di oggi.

Come suggerisce il nome, i record definiti dall'utente sono le variabili di record la cui struttura è definita dall'utente, a differenza dei record basati su tabelle o cursori le cui strutture sono derivate dalle rispettive tabelle o cursori. Ciò significa che con i record definiti dall'utente puoi avere il controllo completo sulla struttura della variabile del tuo record.

Il processo di creazione della variabile record definita dall'utente è diviso in due parti. Prima di definire il record dobbiamo prima definire il TYPE per la variabile record. Questo TIPO diventerà la base della variabile User Define Record e aiuterà a guidarne la struttura. Una volta che il TYPE è stato dichiarato con successo, possiamo usarlo per creare la nostra variabile record definita dall'utente.

Sintassi dei record definiti dall'utente in Oracle Database

Di seguito è riportata la sintassi per la creazione del TYPE per la variabile del tipo di dati del record definita dall'utente.

TYPE type_name IS RECORD (
field_name1 datatype 1,
field_name2 datatype 2,
...
field_nameN datatype N 
);

Una volta dichiarato il nostro TYPE, siamo pronti per creare la nostra variabile di record. Questa variabile acquisirà quindi tutte le proprietà del tipo con cui viene creata. Ed ecco la sintassi per creare la variabile del tipo di dati del record definita dall'utente.

record_name TYPE_NAME;

Hai notato che, a differenza della variabile di record basata su tabella o basata su cursore, non è necessario utilizzare l'attributo %ROWTYPE qui per dichiarare la variabile di record?

Puoi guardare il Video Tutorial sul mio canale YouTube per una spiegazione dettagliata della sintassi di cui sopra.

Esempio:come creare una variabile del tipo di dati del record definita dall'utente.

Passaggio 1:dichiara il tipo per la variabile di record definita dall'utente

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  DEPARTMENTS.department_name%TYPE 
  );

Passaggio 2:dichiara la variabile record definita dall'utente

Dopo aver creato il TIPO, sei pronto per creare la tua variabile record definita dall'utente.

var1 rv_dept;

Questa istruzione PL/SQL sopra creerà una variabile record con il nome VAR1.

Passaggio 3:inizializza la variabile record definita dall'utente.

La variabile record definita dall'utente può essere inizializzata in diversi modi. Ad esempio, puoi inizializzare la variabile record direttamente assegnandole un valore usando la variabile di assegnazione oppure puoi recuperare i valori memorizzati nella colonna di una tabella usando l'istruzione SELECT-INTO. Quindi andiamo avanti con il nostro esempio e impariamo come inizializzare una variabile di record definita dall'utente utilizzando l'istruzione SELECT-INTO.

Successivamente scriverò la sezione di esecuzione. Nella sezione di esecuzione avremo un'istruzione SELECT che unirà la tabella dei dipendenti e la tabella dei reparti e restituirà il nome e il nome del dipartimento del dipendente specifico.

BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100; 
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;

L'istruzione select che abbiamo qui restituirà il nome e il nome del dipartimento del dipendente il cui ID dipendente è 100. I dati per entrambe le colonne provengono da tabelle diverse, quindi abbiamo usato un JOIN qui. Poiché ci sono due diverse tabelle coinvolte nella query, quindi in tale situazione l'uso della variabile record basata su tabella non è possibile, quindi la soluzione praticabile è la variabile record definita dall'utente.

Uniamo tutti i blocchi di codici sopra in un unico blocco PL/SQL anonimo.

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  departments.department_name%type 
  );
  var1 rv_dept;
BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100;
  
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;
/

È così che creiamo una variabile del tipo di dati del record definita dall'utente in Oracle Database. Spero ti sia piaciuto leggere e imparato qualcosa di nuovo. Inoltre, regalerò il merchandising di RebellionRider a un vincitore selezionato a caso ogni mese, quindi assicurati di condividere questo blog con i tuoi amici sui tuoi social.

Questo è tutto gente, grazie e buona giornata!