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!

PL/SQL - Operators

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:

  1. Esponente (**)
  2. Moltiplicazione (*), Divisione (/)
  3. Addizione (+), Sottrazione (-)
  4. Operatori di confronto (=, <>, <, >, <=, >=)
  5. IS NULL, LIKE, BETWEEN, IN
  6. NOT
  7. AND
  8. 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:

  1. 10 / 2 = 5 (divisione, poi confronto)
  2. 5 > 3 (confronto)
  3. 2 + 2 = 4 (addizione, poi confronto)
  4. NOT (2 + 2 = 4) (NOT logico)
  5. 5 > 3 AND 10 / 2 = 5 (AND logico)
  6. 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