Visitatori: 1957
Nella scorsa lezione abbiamo visto l'operatore di assegnazione ':='. Tuttavia non è l'unico modo di assegnare un valore ad una variabile in PL/SQL.
Un metodo molto utilizzato è quello di assegnare ad una variabile il risultato restituito da istruzione SELECT.
DECLARE
nome VARCHAR(30);
...
BEGIN
SELECT nome_studente
into nome
FROM STUDENTI
WHERE id_studente=1;
END;
Nell'esempio viene ricavato il nome dello studento con id_studente=1 e assegnato alla variabile nome.
Nell'esempio sopra abbiamo dichiarato la variabile nome come VARCHAR(30), presumendo che sul database il campo nome_studente sia dello stesso tipo o di un tipo compatibile.
Quando non conosciamo a priori il tipo di dato è possibile utilizzare l'attributo %TYPE che PL/SQL ci mette a disposizione. Vediamo un esempio concreto:
DECLARE
nome nome_studente.STUDENTI%TYPE; //Colonna.TABELLA%TYPE
...
BEGIN
SELECT nome_studente
into nome
FROM STUDENTI
WHERE id_studente=1;
END;
In questo esempio abbiamo ricavato il tipo di variabile direttamente dalla colonna corrispondente della tabella studenti. L'utilizzo dell'attributo %TYPE è molto comune in PL/SQL e deve essere ben compreso.
PL/SQL mette a disposizione degli sviluppatori tipi di dati composti che facilitano la memorizzazione di dati che hanno una struttura complessa. Il concetto di RECORD viene spesso associato a quello di TUPLA ovvero riga di una particolare tabella, anche se il concetto di RECORD è più generico in quanto lo sviluppatore può definire un proprio tipo RECORD non necessariamente corrispondente alla struttura di una riga della tabella.
Un RECORD rappresenta un insieme di dati logicamente correlati memorizzati in diversi campi, ognuno con un tipo di dato specifico:
La sintassi per la dichiarazione di un tipo RECORD è la seguente:
TYPE nome_rec IS RECORD (campo1, datatype [,campo2 datatype]…;
DECLARE
TYPE mio_studente IS RECORD
(nome VARCHAR(30),
cognome VARCHAR(30),
data_nascita DATE);
studente mio_studente;
...
BEGIN
...
END;
Nell'esempio sopra abbiamo dichiarato un nostro tipo RECORD attraverso la parola chiave TYPE e successivamente abbiamo dichiarato una variabile "studente" di tipo "mio_studente".
Tuttavia questo non è l'unico modo di creare dati di tipo RECORD. PL/SQL ci viene in aiuto mettendo a dosposizione un costrutto molto semplice per creare tipi RECORD a partire dalla struttura di una TABELLA. Per esempio se volessimo creare un tipo RECORD che riproduce esattamente i dati di una riga della tabella STUDENTI scriveremo:
DECLARE
...
studente STUDENTI%ROWTYPE;
...
BEGIN
...
END;
L'attributo %ROWTYPE permette quindi di dichiarare esplicitamente un tipo RECORD che ha la stessa struttura di una TABELLA del database.
In entrambi i casi per accedere ai campi di un tipo RECORD si usa la sintassi:
nome_record.nome_campo
quindi anche per assegnare il valore ad un campo scriveremo nel nostro blocco PL/SQL:
nome_record.nome_campo := valore;
Nella prossima lezione vedremo l'utilizzo dei CURSORI.
Lezione precedente | Indice degli articoli | Lezione successiva

|