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

Come creare array associativi nel database Oracle

L'array associativo è precedentemente noto come tabelle PL/SQL in PL/SQL 2 (versione PL/SQL fornita con Oracle 7) e Index-by-Table in Oracle 8 Database. Dopo Nested Table e VARRAY, Associative Array è il terzo tipo di raccolta ampiamente utilizzato dagli sviluppatori.

Scopriamo le risposte ad alcune domande sull'array associativo che ti aiuterebbero a capirle meglio. In questa sezione scoprirai anche alcune delle principali differenze e somiglianze tra Associative Array e altre raccolte come VARRAY e Nested Tables.

Gli array associativi sono limitati o illimitati?

Simile alle tabelle nidificate, Gli array associativi sono una forma di raccolta illimitata. Ciò significa che non esiste un limite superiore al numero di elementi che può contenere. Lo stesso non vale per VARRAY poiché gli array di variabili sono limitati in natura.

Gli array associativi sono persistenti o non persistenti?

A differenza di Nested Table e VARRAY, Gli array associativi sono una forma di raccolta non persistente . Ciò significa che né l'array né i dati possono essere archiviati nel database, ma sono disponibili solo nei blocchi PL/SQL.

Gli array associativi sono sparsi o densi?

Mentre i VARRAY sono array densamente popolati, le tabelle nidificate e gli array associativi sono array scarsamente popolati il che significa che la numerazione degli indici deve essere univoca ma non necessariamente sequenziale.

Possiamo creare array associativi come oggetto database?

A causa della loro natura non persistente, gli array associativi non possono essere archiviati nello schema. Possono essere creati solo in blocchi PL/SQL ma non a livello di schema come oggetto di database.

Possiamo riutilizzare l'array associativo?

Come accennato in precedenza, l'array associativo è una raccolta non persistente che non può essere creata a livello di schema, quindi non può essere archiviata nello schema, quindi non può essere riutilizzata.

La numerazione dell'indice/la numerazione degli indici nell'array associativo è implicita o esplicita?

A differenza delle tabelle nidificate e dei VARRAY, l'indicizzazione nell'array associativo è esplicita. Laddove Oracle Engine assegna il numero di indice/pedice agli elementi della tabella Nested e delle raccolte VARRAY in modo implicito in background, negli array associativi gli utenti devono specificare il numero di indice in modo esplicito durante il popolamento della raccolta.

Come vengono archiviati i dati nell'array associativo?

L'array associativo memorizza i dati in coppie chiave-valore in cui il numero di indice funge da chiave e i dati archiviati nella cella fungono da valore.

Queste sono alcune domande fondamentali che puoi aspettarti durante l'esame o il colloquio. Continua a leggere per scoprire le differenze tecniche tra gli array associativi e altre raccolte.

Definire la raccolta PL/SQL – Array associativo?
Utilizzando le informazioni derivate dalle domande precedenti, possiamo definire gli array associativi come una raccolta unidimensionale e omogenea che memorizza i dati in una coppia chiave-valore. È di natura sparsa, illimitata e non persistente.

Qual ​​è la sintassi dell'array associativo PL/SQL?

TYPE aArray_name IS TABLE OF element_datatype [Not Null]
INDEX BY index_elements_datatype;

Come detto sopra, l'array associativo è un tipo di raccolta non persistente, quindi non può essere creato come oggetto database autonomo, quindi non può essere riutilizzato come il resto delle altre raccolte. Può essere disponibile solo nel blocco PL/SQL. Assicurati sempre di creare il tuo array associativo nella sezione DELCARATION del tuo blocco PL/SQL. [Leggi qui per sapere quante sezioni ci sono nel blocco PL/SQL?] Vediamo la sintassi in dettaglio:

Digita :la parola chiave segna l'inizio dell'istruzione.

aArray_name :Nome dell'array associativo. È completamente definito dall'utente ed è conforme alle norme di denominazione di Oracle Database.

È TABELLA DI :Frase riservata di Oracle Database utilizzando quale utente dice al compilatore che tipo di elementi conterrà l'array?

Tipo_dati_elemento :tipo di dati degli elementi che l'array conterrà. In Oracle Database tutte le raccolte sono di natura omogenea, il che significa che ogni elemento della raccolta deve essere dello stesso tipo di dati.

Non_null :Una clausola facoltativa, che, se utilizzata, assicura che ogni indice abbia un valore corrispondente piuttosto che un NULL.

INDICE PER :clausola che utilizza quale utente specifica il tipo di dati del pedice dell'array.

Indice_elementi_tipo di dati :tipo di dati degli elementi pedice dell'array.

Esempio:come creare array associativi in ​​Oracle Database?

L'array associativo può essere creato solo all'interno di un blocco PL/SQL, quindi il suo ambito è limitato al blocco in cui è stato creato, il che significa che non può essere utilizzato al di fuori di quel blocco. Vediamo come creare un array associativo in Oracle Database?

Passaggio 1:crea array associativo

	SET SERVEROUTPUT ON;
	DECLARE
	    TYPE books IS TABLE OF NUMBER
	        INDEX BY VARCHAR2 (20);

Nel codice sopra abbiamo creato un array associativo con il nome "Libri". ' che può contenere elementi di NUMBER tipi di dati e pedice di tipo di dati VARCHAR2.

Passaggio 2:crea una variabile array associativa

Isbn Books;

È necessaria una variabile array associativa per fare riferimento all'array nel programma. La variabile array può essere creata molto facilmente. Devi solo scrivere il nome della variabile (che è 'isbn' nel nostro caso) che è definito dall'utente seguito dal nome dell'array associativo.

Passaggio 3:inserisci i dati nell'array associativo

Come accennato in precedenza, l'array associativo contiene i dati in coppie chiave-valore. Pertanto, a differenza del resto delle altre raccolte, gli utenti devono inserire sia il pedice dell'array (la chiave) che i dati.

BEGIN
-- How to insert data into the associative array 
isbn('Oracle Database') := 1234;
isbn('MySQL') := 9876; 

Come la tabella nidificata e i VARRAY, inseriamo i dati nell'array associativo nella sezione di esecuzione del blocco PL/SQL. Se hai notato qui, a differenza di altre raccolte, non abbiamo utilizzato l'istruzione INSERT DML per inserire i dati, ma l'abbiamo inserita utilizzando la variabile Array 'isbn' . Di seguito puoi vedere la sintassi dell'istruzione insert per l'array associativo che utilizza la variabile array.

Array_variable (subscript/key) := data; 

Come puoi vedere per inserire i dati nell'array associativo devi prima scrivere il nome della variabile dell'array seguito dal pedice dell'array e quindi i dati per il tuo array.

Fase 4:Come aggiornare i dati di raccolta – Array associativo?

L'aggiornamento dei valori dell'array associativo è facile come inserirli. Se vuoi modificare un valore, scrivi la stessa istruzione che viene utilizzata per l'inserimento con i valori modificati. Ad esempio, supponiamo di voler modificare il valore rispetto alla chiave MySQL da 9876 a 1010, quindi scrivi semplicemente

	-- How to update data of associative array.	
	 	isbn('MySQL') := 1010; 

Anche in questo caso non è necessario scrivere UPDATE DML per aggiornare i valori. Usa semplicemente la variabile array.

Passaggio 5:come recuperare i dati dall'array Collection- Associative?

Proprio come non abbiamo bisogno dell'istruzione Inserisci DML per inserire valori o Aggiorna DML per aggiornare i valori, allo stesso modo non abbiamo bisogno di Seleziona DML per recuperare i valori.

Supponiamo di voler vedere il valore memorizzato rispetto alla chiave "Database Oracle". Per questo devi solo scrivere...

-- how to retrieve data using key from associative array.  	
	  DBMS_OUTPUT.PUT_LINE ('Value '||isbn ('Oracle Database'));

Uniamo tutti questi blocchi di codice in un unico programma.

SET SERVEROUTPUT ON;
DECLARE
    TYPE books IS TABLE OF NUMBER
        INDEX BY VARCHAR2(20);
    isbn Books;
BEGIN
    	-- How to insert data into the associative array 
    	isbn('Oracle Database') := 1234;
    	isbn('MySQL') := 9876;
    	DBMS_OUTPUT.PUT_LINE('Value Before Updation '||isbn('MySQL'));

    	-- How to update data of associative array.
    	isbn('MySQL') := 1010;
    
-- how to retrieve data using key from associative array.  
    	DBMS_OUTPUT.PUT_LINE('Value After Updation '||isbn('MySQL'));
END;
/

Ecco il programma con alcune minime modifiche. Il programma PL/SQL sopra mostra come recuperare un valore specifico usando la chiave. Puoi guardare il video tutorial per imparare come recuperare tutti i valori dall'array associativo usando i loop. Lì l'ho spiegato in modo molto dettagliato.

Prima di concludere questo tutorial, ci sono alcuni suggerimenti che penso dovresti sapere. Questi puntatori sono –

  • Supporto array associativo PL/SQL BINARY_INTEGER, PLS_INTEGER, POSITIVE, NATURAL, SIGNTYPE o VARCHAR2 come tipo di dati indice.
  • RAW, NUMBER, LONG-ROW, ROWID e CHAR sono tipi di dati dell'indice non supportati.

In caso di Element Datatype, la raccolta PL/SQL Associative Array Supports –

  • Tipo di dati scalare PL/SQL :DATE, BLOB, CLOB, BOOLEAN o NUMBER &VARCHAR2 con i loro sottotipi.
  • Dati dedotti :termine utilizzato per tali tipi di dati ereditati da una colonna di tabella, un'espressione del cursore o una variabile di pacchetto predefinita
  • Tipo definito dall'utente: Un tipo di oggetto o un tipo di raccolta definito dall'utente.

Questo è un tutorial dettagliato su PL/SQL Collection – Associative Array. Questo tutorial copre tutti gli argomenti che puoi aspettarti in Oracle Database Certification Exam e in Interview. Spero ti sia piaciuto leggere.

Puoi aiutare gli altri a imparare qualcosa di nuovo e anche aiutarci a raggiungere più persone condividendo questo blog sui tuoi social network. Non dimenticare di taggarci perché amiamo dare grida forti a tutti i nostri sostenitori, spettatori e abbonati. Grazie e buona giornata!