PL/SQL - Array

Ciao, aspiranti programmatori! Oggi esploreremo il mondo emozionante degli array PL/SQL. Come il tuo amico insegnante di scienze informatiche del quartiere, sono qui per guidarti in questo viaggio passo dopo passo. Non preoccuparti se sei nuovo alla programmazione - inizieremo dalle basi e lavoreremo fino ad arrivarci. Allora, prendi i tuoi block notes virtuali e iniziamo!

PL/SQL - Arrays

Cos'è un Array in PL/SQL?

Prima di tuffarci in profondità, capiamo cos'è un array. Immagina di avere una serie di cioccolatini e, invece di lasciarli sparsi sulla tua scrivania, decidi di metterli in una piccola scatola ordinata. Questa scatola è come un array - è un contenitore che tiene più elementi dello stesso tipo.

In PL/SQL, un array è una raccolta di elementi dello stesso tipo di dati. Ti permette di memorizzare e manipolare più valori sotto un singolo nome di variabile. Molto comodo, vero?

Tipi di Array in PL/SQL

PL/SQL offre tre tipi di array:

  1. Array Associativi (Tabelle Indice-Per)
  2. Tabelle Annidate
  3. Array di dimensione variabile (VARRAY)

Focalizziamoci sui VARRAY per ora, sono un ottimo punto di partenza per i principianti.

Creare un Tipo Varray

Un VARRAY (Array di dimensione variabile) è un tipo di array in PL/SQL che ha un limite di dimensione massima. È come comprare una scatola di cioccolatini con un numero fisso di compartimenti - non puoi aggiungere più cioccolatini di quanti la scatola può contenere!

Ecco come crei un tipo VARRAY:

CREATE OR REPLACE TYPE number_array AS VARRAY(5) OF NUMBER;

Analizziamo questo:

  • CREATE OR REPLACE TYPE: Questo dice a Oracle di creare un nuovo tipo o sostituire uno esistente.
  • number_array: Questo è il nome che stiamo dando al nostro nuovo tipo.
  • AS VARRAY(5): Stiamo definendo come un VARRAY con un massimo di 5 elementi.
  • OF NUMBER: Ogni elemento in questo array sarà di tipo NUMBER.

Ora vediamo come possiamo utilizzare questo VARRAY in un blocco PL/SQL:

DECLARE
my_numbers number_array := number_array(10, 20, 30, 40, 50);
BEGIN
FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Elemento ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/

Output:

Elemento 1: 10
Elemento 2: 20
Elemento 3: 30
Elemento 4: 40
Elemento 5: 50

Analizziamo questo codice:

  1. Dichiariamo my_numbers come il nostro VARRAY e lo inizializziamo con 5 numeri.
  2. Utilizziamo un ciclo FOR per iterare attraverso l'array.
  3. my_numbers.COUNT ci dà il numero di elementi nell'array.
  4. Utilizziamo my_numbers(i) per accedere a ciascun elemento e stamparlo.

Lavorare con VARRAYs

Ora che abbiamo creato e inizializzato un VARRAY, esploriamo alcune operazioni che possiamo eseguire su di esso.

Aggiungere Elementi

Ricorda, non possiamo aggiungere più elementi del limite massimo che abbiamo definito. Proviamo ad aggiungere un elemento:

DECLARE
my_numbers number_array := number_array(10, 20, 30);
BEGIN
my_numbers.EXTEND;
my_numbers(4) := 40;

FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Elemento ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/

Output:

Elemento 1: 10
Elemento 2: 20
Elemento 3: 30
Elemento 4: 40

Qui, abbiamo utilizzato EXTEND per aumentare la dimensione dell'array di 1, poi abbiamo assegnato un valore al nuovo elemento.

Rimuovere Elementi

Possiamo anche rimuovere elementi dalla fine dell'array:

DECLARE
my_numbers number_array := number_array(10, 20, 30, 40, 50);
BEGIN
my_numbers.TRIM(2);  -- Rimuovi ultimi 2 elementi

FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Elemento ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/

Output:

Elemento 1: 10
Elemento 2: 20
Elemento 3: 30

Il metodo TRIM rimuove elementi dalla fine dell'array.

Metodi Comuni per VARRAYs

Ecco una tabella dei metodi comuni che puoi utilizzare con VARRAYs:

Metodo Descrizione
COUNT Restituisce il numero di elementi nell'array
FIRST Restituisce l'indice del primo elemento
LAST Restituisce l'indice dell'ultimo elemento
LIMIT Restituisce la dimensione massima dell'array
EXTEND Aumenta la dimensione dell'array
TRIM Diminuisce la dimensione dell'array
EXISTS Controlla se un elemento esiste in un indice specifico

Esempio Pratico: Voti Studenti

Mettiamo le nostre conoscenze in pratica con un esempio pratico. Immagina di essere un insegnante (come me!) e vuoi memorizzare e calcolare il voto medio di uno studente:

CREATE OR REPLACE TYPE grade_array AS VARRAY(5) OF NUMBER;

DECLARE
student_grades grade_array := grade_array(85, 90, 78, 92, 88);
total_score NUMBER := 0;
average_score NUMBER;
BEGIN
-- Calcola il punteggio totale
FOR i IN 1..student_grades.COUNT LOOP
total_score := total_score + student_grades(i);
END LOOP;

-- Calcola il voto medio
average_score := total_score / student_grades.COUNT;

DBMS_OUTPUT.PUT_LINE('Voto Medio: ' || ROUND(average_score, 2));
END;
/

Output:

Voto Medio: 86.6

Questo esempio mostra come utilizzare un VARRAY per memorizzare i voti di uno studente, poi calcolare e visualizzare il loro voto medio.

Conclusione

Congratulazioni! Hai appena fatto i tuoi primi passi nel mondo degli array PL/SQL. Abbiamo coperto le basi dei VARRAY, come crearli e manipolarli, e persino li abbiamo messi a uso pratico. Ricorda, gli array sono come le scatole di cioccolatini - tengono i tuoi dati organizzati e facili da raggiungere. Mentre continui il tuo viaggio di programmazione, troverai gli array strumenti estremamente utili nel tuo set di strumenti di programmazione.

Continua a praticare, rimani curioso, e non aver paura di sperimentare. Prima di sapere, sarai array-zing tutti con le tue abilità PL/SQL! (Mi scuso, non potevo resistere a un po' di umorismo da insegnante lì).

Buon codice, futuri maghi del database!

Credits: Image by storyset