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

Come creare VARRAY come oggetto di database nel database Oracle

L'ambito del VARRAY che viene creato come membro del blocco PL/SQL è limitato al blocco in cui è stato creato, ciò significa che non possiamo utilizzare questo VARRAY al di fuori del suo blocco o addirittura riutilizzarlo e questo è il suo più grande svantaggio. Quindi vai avanti e continua a leggere per scoprire come possiamo superare questo svantaggio di VARRAY.

Questo inconveniente può essere facilmente superato se riusciamo a trovare un modo per creare il VARRAY al di fuori del blocco PL/SQL e archiviarlo permanentemente nello schema. Fortunatamente possiamo raggiungere entrambi gli obiettivi creando il VARRAY come oggetto di database. Questo è esattamente ciò che impareremo in questo tutorial.

In questo tutorial impareremo –

  • Come creare VARRAY come oggetto database.
  • Come usare quel varray.
  • Come inserire i dati nel VARRAY.
  • Come recuperare i dati nel (dal) VARRAY
  • Come aggiornare i dati del VARRAY.

Iniziamo con il primo passo.

Come creare VARRAY come oggetto database?

	SET SERVEROUTPUT ON;
	CREATE OR REPLACE TYPE dbObj_vry IS VARRAY (5) OF NUMBER;
	/

Il codice sopra in caso di esecuzione riuscita creerà un VARRAY con nome dbObj_vry che avrà il limite di dimensione di 5 elementi e il loro tipo di dati sarà NUMBER. Questo VARRAY ha una portata più ampia e può essere utilizzato non solo all'interno del blocco PL/SQL ma anche con altri oggetti dello schema.

Come utilizzare il VARRAY creato come oggetto di database?

Il vantaggio di definire VARRAY come oggetto di database è che può essere referenziato da qualsiasi programma che abbia il permesso di usarlo. Puoi utilizzare VARRAY con tabelle, record o anche con blocchi PL/SQL.

Facciamo l'esempio:

Esempio 1. Come definire una colonna di una tabella utilizzando VARRAY?

CREATE TABLE calendar(
    day_name        VARCHAR2(25),
    day_date        dbObj_vry
);
/

Nel codice sopra abbiamo creato una tabella con il nome Calendar che ha due colonne day_name e day_date. La prima colonna può contenere dati di tipo VARCHAR2 mentre la seconda colonna può contenere dati di tipo dbObj_vry che è un VARRAY.

Informazioni:cosa significa definire una colonna di una tabella come tipo VARRAY?
Definire una colonna di una tabella come tipo VARRAY significa che può contenere un numero 'n' di valori al suo interno. Dove 'n' è uguale al limite di dimensione di quel varray. Nel nostro caso il limite di dimensione di VARRAY è 5, il che significa che la colonna "Day Date" della tabella Calendar può contenere 5 valori.

Come inserire i dati nel VARRAY?

INSERT INTO calendar ( day_name, day_date ) 
VALUES ( 'Sunday', dbObj_vry (7, 14, 21, 28) );    

Questa istruzione di inserimento DML inserirà una riga nella tabella Calendar. Inserire i dati nella prima colonna "Day Name" che è di tipo varchar2 è facile. Devi solo scrivere i dati desiderati e racchiuderli tra virgolette singole. Ma lo stesso non vale per la seconda colonna "Day Date" che è di tipo VARRAY. Per inserire i dati nella colonna che è di tipo VARRAY devi prima scrivere il nome del varray e fornire i dati.

Inoltre, devi assicurarti quattro cose

  1. I dati che stai fornendo devono essere racchiusi tra parentesi.
  2. Il tipo di dati dei dati deve corrispondere al tipo di dati degli elementi del tuo VARRAY che nel nostro caso è NUMBER.
  3. Il numero di elementi che stai inserendo nella colonna deve essere inferiore o uguale al limite di dimensione del VARRAY. Nel nostro caso è 5 e stiamo inserendo 4 elementi nella colonna che è completamente ok. Ma se supponiamo di inserire 6 elementi nella colonna, si verificherà un errore.
  4. Se inserisci più dati nella colonna VARRAY, assicurati di separare gli elementi l'uno dall'altro usando il punto e virgola.

Come recuperare i dati dal VARRAY?

I dati possono essere recuperati utilizzando l'istruzione SELECT. Qualsiasi istruzione SELECT scritta correttamente farà il lavoro. Ad esempio

SELECT * FROM calendar;

Questo recupererà tutti i dati dal calendario della tabella.

Nel caso in cui desideri visualizzare i dati memorizzati nella colonna, che contiene dati di tipo VARRAY, in un formato relazionale, puoi utilizzare l'aiuto dell'espressione TABLE. Ad esempio

SELECT 
    tab1.day_name, 
    vry.column_value AS "Date"
FROM calendar tab1, TABLE (tab1.day_date) vry;

Questa istruzione SELECT ti mostrerà i dati di entrambe le colonne in un formato relazionale. L'espressione TABLE può aprire l'istanza della raccolta e rappresentare le righe dell'oggetto in formato relazionale.

Come aggiornare i dati della colonna di tipo VARRAY?

L'aggiornamento dei valori della colonna di tipo VARRAY è piuttosto semplice. L'esempio seguente ti mostrerà come aggiornare i valori delle colonne day_date.

UPDATE calendar 
SET day_date = dbObj_vry(10,14,21,28) 
WHERE day_name = 'Sunday';

Esempio 2. Come utilizzare VARRAY con il blocco PL/SQL?

Nell'esempio precedente abbiamo imparato come utilizzare il VARRAY che viene creato come oggetto Database per definire la colonna di una tabella. Ora vedremo come utilizzare lo stesso varray all'interno di un blocco PL/SQL.

DECLARE
    vry_obj dbObj_vry    := dbObj_vry();
BEGIN
    FOR i IN 1..vry_obj.LIMIT
    LOOP
        vry_obj.EXTEND; 
        vry_obj(i):= 10*i;
        DBMS_OUTPUT.PUT_LINE(vry_obj(i));    
    END LOOP;
END;
/

Hai visto questo esempio nell'ultimo tutorial. Non ci sono cambiamenti così grandi qui tranne che questa volta invece di definire il VARRAY all'interno del blocco lo abbiamo creato come un oggetto database autonomo. Ti suggerisco di dare un'occhiata all'ultimo tutorial in cui ho spiegato in dettaglio il codice sopra.

Questo è il tutorial PL/SQL su come creare VARRAY come oggetto Database in Oracle. Spero ti sia piaciuto leggere, in tal caso assicurati di condividere questo blog sui tuoi social con i tuoi amici. Grazie e buona giornata!