Tipi di dati PL/SQL

Ciao, futuri programmatori! Oggi ci immergeremo nel mondo affascinante dei tipi di dati PL/SQL. Non preoccupatevi se siete nuovi al编程; vi guiderò in questo viaggio passo dopo passo. Alla fine di questo tutorial, vi sentirete a vostro agio con vari tipi di dati in PL/SQL e pronti per iniziare la vostra avventura di programmazione!

PL/SQL - Data Types

Tipi di dati scalari PL/SQL e sottotipi

Iniziamo dalle basi. In PL/SQL, i tipi di dati scalari sono i mattoni delle nostre applicazioni. Rappresentano valori singoli, come numeri o testi.

Cos'è un tipo di dati scalare?

I tipi di dati scalari sono la forma più semplice di dati in PL/SQL. Sono come gli atomi del nostro universo di programmazione - unità piccole e indivisibili che utilizziamo per costruire strutture più complesse.

Ecco un esempio semplice per illustrare un tipo di dati scalare:

DECLARE
my_name VARCHAR2(50) := 'John Doe';
BEGIN
DBMS_OUTPUT.PUT_LINE('Il mio nome è: ' || my_name);
END;

In questo esempio, my_name è una variabile del tipo VARCHAR2, utilizzato per memorizzare testi. Le abbiamo assegnato il valore 'John Doe'. Quando eseguiamo questo codice, outputterà: "Il mio nome è: John Doe".

Tipi di dati numerici PL/SQL e sottotipi

Ora parliamo di numeri. PL/SQL ha diversi tipi di dati numerici per gestire diversi tipi di numeri.

Tipi di dati numerici comuni

Tipo di dati Descrizione Esempio
NUMBER Numero generico NUMBER(10,2)
INTEGER Numeri interi INTEGER
BINARY_FLOAT Numero a virgola mobile a 32 bit BINARY_FLOAT
BINARY_DOUBLE Numero a virgola mobile a 64 bit BINARY_DOUBLE

Vediamo questi in azione:

DECLARE
my_integer INTEGER := 42;
my_float BINARY_FLOAT := 3.14;
my_salary NUMBER(8,2) := 5000.50;
BEGIN
DBMS_OUTPUT.PUT_LINE('La risposta è: ' || my_integer);
DBMS_OUTPUT.PUT_LINE('Pi è approssimativamente: ' || my_float);
DBMS_OUTPUT.PUT_LINE('Il mio stipendio è: $' || my_salary);
END;

Questo script dichiara tre variabili con diversi tipi numerici. Il tipo NUMBER(8,2) per my_salary significa che può memorizzare fino a 8 cifre in totale, con 2 cifre dopo la virgola decimale.

Tipi di dati character PL/SQL e sottotipi

I dati testuali sono fondamentali nella programmazione. PL/SQL fornisce diversi tipi di dati character per gestire il testo in modo efficiente.

Tipi di dati character comuni

Tipo di dati Descrizione Esempio
VARCHAR2 Stringa character variabile lunghezza VARCHAR2(100)
CHAR Stringa character di lunghezza fissa CHAR(10)
NVARCHAR2 Stringa character variabile lunghezza Unicode NVARCHAR2(100)
NCHAR Stringa character di lunghezza fissa Unicode NCHAR(10)

Ecco come li utilizziamo nella pratica:

DECLARE
my_varchar VARCHAR2(50) := 'Ciao, Mondo!';
my_char CHAR(10) := 'Fisso     ';
my_nvarchar NVARCHAR2(50) := N'こんにちは'; -- "Ciao" in giapponese
BEGIN
DBMS_OUTPUT.PUT_LINE('VARCHAR2: ' || my_varchar);
DBMS_OUTPUT.PUT_LINE('CHAR: ' || my_char || '(fine)');
DBMS_OUTPUT.PUT_LINE('NVARCHAR2: ' || my_nvarchar);
END;

Notate come il tipo CHAR aggiunge spazi per riempire la lunghezza fissa.

Tipi di dati boolean PL/SQL

I tipi di dati boolean sono essenziali per prendere decisioni nei nostri programmi. Possono avere solo tre valori possibili: TRUE, FALSE o NULL.

DECLARE
is_student BOOLEAN := TRUE;
has_job BOOLEAN := FALSE;
is_married BOOLEAN;
BEGIN
IF is_student THEN
DBMS_OUTPUT.PUT_LINE('Questa persona è uno studente.');
END IF;

IF NOT has_job THEN
DBMS_OUTPUT.PUT_LINE('Questa persona non ha un lavoro.');
END IF;

IF is_married IS NULL THEN
DBMS_OUTPUT.PUT_LINE('Non sappiamo se questa persona è sposata.');
END IF;
END;

Questo script dimostra come utilizziamo i valori booleani per prendere decisioni nel nostro codice.

Tipi di dati datetime e interval PL/SQL

Quando si lavora con date e ore, PL/SQL fornisce tipi di dati specifici per gestire questi valori in modo accurato.

Tipi di dati datetime comuni

Tipo di dati Descrizione Esempio
DATE Data e ora DATE
TIMESTAMP Data e ora con secondi frazionari TIMESTAMP
INTERVAL YEAR TO MONTH Intervallo di tempo in anni e mesi INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND Intervallo di tempo in giorni, ore, minuti e secondi INTERVAL DAY TO SECOND

Vediamo questi in azione:

DECLARE
current_date DATE := SYSDATE;
future_date TIMESTAMP := SYSTIMESTAMP + INTERVAL '1' YEAR;
age_interval INTERVAL YEAR TO MONTH;
BEGIN
age_interval := (SYSDATE - TO_DATE('1990-01-01', 'YYYY-MM-DD')) YEAR TO MONTH;

DBMS_OUTPUT.PUT_LINE('Data corrente: ' || TO_CHAR(current_date, 'DD-MON-YYYY'));
DBMS_OUTPUT.PUT_LINE('Data dopo 1 anno: ' || TO_CHAR(future_date, 'DD-MON-YYYY HH24:MI:SS.FF'));
DBMS_OUTPUT.PUT_LINE('Età: ' || age_interval);
END;

Questo script dimostra come lavorare con date, timestamp e intervalli.

Tipi di dati LOB PL/SQL

Per gestire grandi quantità di dati, PL/SQL fornisce tipi di dati LOB (Large Object).

Tipi di dati LOB comuni

Tipo di dati Descrizione Esempio
CLOB Character Large Object CLOB
BLOB Binary Large Object BLOB
NCLOB National Character Large Object NCLOB

Ecco un esempio semplice di utilizzo di un CLOB:

DECLARE
my_clob CLOB;
BEGIN
my_clob := 'Questa è una stringa molto lunga che potrebbe potenzialmente essere di diverse megabyte.';
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.GETLENGTH(my_clob) || ' caratteri di lunghezza');
END;

Questo script crea un CLOB e dimostra come ottenere la sua lunghezza.

Sottotipi definiti dall'utente in PL/SQL

PL/SQL permette di creare i propri sottotipi basati su tipi di dati esistenti. Questo può aiutare a rendere il codice più leggibile e mantenibile.

DECLARE
SUBTYPE positive_number IS NUMBER(8,2) CHECK (positive_number > 0);
my_salary positive_number;
BEGIN
my_salary := 5000.50;
DBMS_OUTPUT.PUT_LINE('Il mio stipendio: $' || my_salary);

-- Questo genererebbe un errore:
-- my_salary := -1000;
END;

In questo esempio, abbiamo creato un sottotipo positive_number che garantisce che il valore sia sempre positivo.

Valori NULL in PL/SQL

Infine, parliamo dei valori NULL. In PL/SQL, NULL rappresenta un valore sconosciuto o non disponibile. Non è lo stesso di zero o di una stringa vuota.

DECLARE
var1 NUMBER;
var2 VARCHAR2(10) := '';
BEGIN
IF var1 IS NULL THEN
DBMS_OUTPUT.PUT_LINE('var1 è NULL');
END IF;

IF var2 IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('var2 non è NULL, è una stringa vuota');
END IF;
END;

Questo script dimostra la differenza tra NULL e una stringa vuota.

E вот che! Abbiamo coperto i principali tipi di dati in PL/SQL. Ricorda, comprendere i tipi di dati è fondamentale per scrivere codice efficiente e privo di errori. Continua a esercitarti e presto diventerai un esperto di PL/SQL!

Credits: Image by storyset