PL/SQL - Operatori
Ciao, aspiranti programmatori! Oggi ci imbarchiamo in un viaggio emozionante nel mondo degli operatori PL/SQL. Non preoccupatevi se non avete mai scritto una riga di codice prima – inizieremo dalle basi e lavoreremo fino ad arrivare a livelli più avanzati. Alla fine di questo tutorial, sarete in grado di manipolare i dati come un professionista!

Operatori Aritmetici
Iniziamo con qualcosa di familiare: la matematica! Gli operatori aritmetici di PL/SQL funzionano esattamente come quelli che avete imparato a scuola. Ci permettono di eseguire operazioni matematiche di base sui numeri.
Ecco una tabella degli operatori aritmetici in PL/SQL:
| Operatore | Descrizione | Esempio | 
|---|---|---|
| + | Addizione | 5 + 3 = 8 | 
| - | Sottrazione | 10 - 4 = 6 | 
| * | Moltiplicazione | 3 * 4 = 12 | 
| / | Divisione | 15 / 3 = 5 | 
| ** | Esponente | 2 ** 3 = 8 | 
Vediamo questi operatori in azione con un semplice esempio di codice PL/SQL:
DECLARE
num1 NUMBER := 10;
num2 NUMBER := 5;
result NUMBER;
BEGIN
result := num1 + num2;
DBMS_OUTPUT.PUT_LINE('Addizione: ' || result);
result := num1 - num2;
DBMS_OUTPUT.PUT_LINE('Sottrazione: ' || result);
result := num1 * num2;
DBMS_OUTPUT.PUT_LINE('Moltiplicazione: ' || result);
result := num1 / num2;
DBMS_OUTPUT.PUT_LINE('Divisione: ' || result);
result := num1 ** 2;
DBMS_OUTPUT.PUT_LINE('Esponente: ' || result);
END;
In questo esempio, dichiariamo due variabili num1 e num2, e poi eseguiamo diverse operazioni aritmetiche su di esse. I risultati vengono poi stampati in output.
Quando eseguite questo codice, vedrete:
Addizione: 15
Sottrazione: 5
Moltiplicazione: 50
Divisione: 2
Esponente: 100
Operatori Relazionali
Ora passiamo agli operatori relazionali. Questi vengono utilizzati per confrontare due valori e determinare la relazione tra di loro. Sono come le domande che fate quando confrontate le cose: "È questa più grande di quella?" o "Queste due sono uguali?"
Ecco una tabella degli operatori relazionali in PL/SQL:
| Operatore | Descrizione | Esempio | 
|---|---|---|
| = | Uguale a | 5 = 5 è vero | 
| <> | Diverso da | 5 <> 3 è vero | 
| < | Minore di | 3 < 5 è vero | 
| > | Maggiore di | 5 > 3 è vero | 
| <= | Minore o uguale a | 3 <= 3 è vero | 
| >= | Maggiore o uguale a | 5 >= 5 è vero | 
Vediamo questi in azione:
DECLARE
a NUMBER := 10;
b NUMBER := 20;
BEGIN
IF a = b THEN
DBMS_OUTPUT.PUT_LINE('a è uguale a b');
ELSIF a < b THEN
DBMS_OUTPUT.PUT_LINE('a è minore di b');
ELSE
DBMS_OUTPUT.PUT_LINE('a è maggiore di b');
END IF;
IF a <> b THEN
DBMS_OUTPUT.PUT_LINE('a è diverso da b');
END IF;
END;
Questo codice confronta a e b utilizzando operatori relazionali. Quando lo eseguite, vedrete:
a è minore di b
a è diverso da b
Operatori di Confronto
Gli operatori di confronto in PL/SQL sono abbastanza simili agli operatori relazionali, ma includono alcune funzionalità aggiuntive, in particolare per lavorare con valori NULL e confrontare tra diversi tipi di dati.
Ecco una tabella degli operatori di confronto:
| Operatore | Descrizione | 
|---|---|
| IS NULL | Controlla se un valore è NULL | 
| IS NOT NULL | Controlla se un valore non è NULL | 
| LIKE | Confronto per modello | 
| BETWEEN | Controlla se un valore è all'interno di un intervallo | 
| IN | Controlla se un valore corrisponde a uno qualsiasi dei valori in una lista | 
Vediamo un esempio:
DECLARE
name VARCHAR2(20) := 'John Doe';
age NUMBER := 25;
BEGIN
IF name IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('Il nome è: ' || name);
END IF;
IF name LIKE 'J%' THEN
DBMS_OUTPUT.PUT_LINE('Il nome inizia con J');
END IF;
IF age BETWEEN 20 AND 30 THEN
DBMS_OUTPUT.PUT_LINE('L\'età è tra 20 e 30');
END IF;
IF age IN (25, 30, 35) THEN
DBMS_OUTPUT.PUT_LINE('L\'età è 25, 30, o 35');
END IF;
END;
Questo codice dimostra vari operatori di confronto. Quando lo eseguite, vedrete:
Il nome è: John Doe
Il nome inizia con J
L'età è tra 20 e 30
L'età è 25, 30, o 35
Operatori Logici
Gli operatori logici ci permettono di combinare più condizioni. Sono come "e" e "o" nella lingua comune quando descriviamo situazioni complesse.
Ecco una tabella degli operatori logici in PL/SQL:
| Operatore | Descrizione | 
|---|---|
| AND | Vero se entrambe le condizioni sono vere | 
| OR | Vero se almeno una delle condizioni è vera | 
| NOT | Inverte il risultato di una condizione | 
Vediamo questi in azione:
DECLARE
age NUMBER := 25;
has_license BOOLEAN := TRUE;
BEGIN
IF age >= 18 AND has_license THEN
DBMS_OUTPUT.PUT_LINE('Puoi guidare una macchina');
END IF;
IF age < 18 OR NOT has_license THEN
DBMS_OUTPUT.PUT_LINE('Non puoi guidare una macchina');
ELSE
DBMS_OUTPUT.PUT_LINE('Puoi guidare una macchina');
END IF;
END;
Questo codice controlla se una persona può guidare in base alla sua età e se ha la patente. Quando lo eseguite, vedrete:
Puoi guidare una macchina
Puoi guidare una macchina
Precedenza degli Operatori PL/SQL
Come nella matematica, gli operatori PL/SQL hanno un ordine specifico in cui vengono valutati. Questo si chiama precedenza degli operatori. Capire questo è fondamentale per scrivere codice corretto e prevedibile.
Ecco la precedenza degli operatori in PL/SQL, da quella più alta a quella più bassa:
- Esponente (**)
 - Moltiplicazione (*), Divisione (/)
 - Addizione (+), Sottrazione (-)
 - Operatori di confronto (=, <>, <, >, <=, >=)
 - IS NULL, LIKE, BETWEEN, IN
 - NOT
 - AND
 - OR
 
Vediamo un esempio di come funziona:
DECLARE
result BOOLEAN;
BEGIN
result := 5 > 3 AND 10 / 2 = 5 OR NOT (2 + 2 = 4);
IF result THEN
DBMS_OUTPUT.PUT_LINE('Il risultato è VERO');
ELSE
DBMS_OUTPUT.PUT_LINE('Il risultato è FALSO');
END IF;
END;
In questo esempio, l'espressione viene valutata come segue:
- 10 / 2 = 5 (divisione, poi confronto)
 - 5 > 3 (confronto)
 - 2 + 2 = 4 (addizione, poi confronto)
 - NOT (2 + 2 = 4) (NOT logico)
 - 5 > 3 AND 10 / 2 = 5 (AND logico)
 - Resultato di passo 5 OR risultato di passo 4 (OR logico)
 
Quando eseguite questo codice, vedrete:
Il risultato è VERO
Ecco tutto! Abbiamo coperto i principali tipi di operatori in PL/SQL. Ricorda, la pratica fa la perfezione. Prova a scrivere i tuoi esempi di codice e sperimenta con diverse combinazioni di operatori. Prima di sapere, sarai in grado di scrivere dichiarazioni PL/SQL complesse con facilità!
Credits: Image by storyset
