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