Record data type

In PL SQL esistono molti tipi di dati: varchar2, number, float, double, boolean, etc, ma può
succedere che si voglia usare una struttura che contiene diversi tipi di dati. Per fare ciò ricorriamo
al Record type.
Esso può essere visto come un nuovo tipo di dato. Record type è formato da un gruppo di una o più
colonne con il proprio nome e tipo dato.
Per creare Record type è necessario usare l’istruzione TYPE in modo che il compilatore
(interprete) sappia che si sta creando un nuovo tipo di dato.
Vi sono 2 modi per creare un Record type: Il primo è a “livello di database” il quale permette di
usare il nostro record type come un nuovo oggetto visibile in tutto il db, come qualsiasi altro tipo
di dato (esempio1), il secondo è a “livello di programma” il quale viene usato solo durante il
programma nel quale si trova (esempio 2).
Se Record type è creato a “livello di database” esso può venire utilizzato come una colonna di una
tabella così che questa colonna conterrà dei dati complessi.
Per inserire i dati in questa struttura è possibile inserire valori per ogni sngolo elemento della
colonna del record coì creato (esempio 2) oppure usarlo come fosse un singolo record (esempio 3)
Qui sotto alcuni esempi per la creazione di un Record type:
Esempio 1:
create type emp_rec is record
(
id number,
name varchar2(100),
position varchar2(200),
salary number
);
/
Spiegazione :
Questo codice crea un record type a “livello di db”
emp_rec è il nome dell’oggetto il quale ha 4 colonne : id, name, position,salary.
L’oggetto emp_rec è visibile in tutto il database così come gli altri tipi di dati ( varchar2, number e
così via) dopo aver dichiarato una variabile di questo tipo
Esempio 2:
declare
type emp_rec is record
(
id number,
name varchar2(100),
position varchar2(200),
salary number
);
my_emp emp_rec;
begin
my_emp.id=45;
my_emp.name=’Steve Austin’;
my_emp.position=’Astronaut’;
my_emp.salary=’200000′;
end;
Spiegazione :
Il codice soprastante crea un record type a “livello di programma”
emp_rec è il nome dell’oggetto che ha 4 colonne id, name, position e salary.
In questo caso emp_rec è visibile solo a in questo programma .
Possiamo accedere ai dati di questo oggetto utilizzando la variabile dichiarata come emp_rec_type
(my_emp nel nostro esempio) seguita dal punto (.) seguita dal nome della colonna
i.e. .
i.e. my_emp.salary
Esempio 3:
declare
type emp_rec is record
(
id number,
name varchar2(100),
position varchar2(200),
salary number
);
my_emp emp_rec;
begin
insert into emp (id_emp, name_emp, pos_emp, sal_emp) values (42,’Steve Austin’, ‘Pilot’, 20000);
select id_emp, name_emp, pos_emp, sal_emp
into my_emp
from emp
where id_emp = 42;
dbms_output(‘Value for id => ‘||my_emp.id);
dbms_output(‘Value for name => ‘||my_emp.name);
dbms_output(‘Value for position => ‘||my_emp.position);
dbms_output(‘Value for salary => ‘||my_emp.salary);
end;
Spiegazione :
Il codice sopra riportato ha creato un record type a “livello di programma”
emp_rec ha 4 colonne : id, name, position e salary.
Il programma usa la tabella emp che contiene le stesse colonne del nostro tipo di dato (emp_rec)
Il programma popola la tabella emp e successivamente popola emp_rec utilizzandla come a livello
di row utilizzando una query .
Infine stampa i valori presenti nella variabile my_emp.

Potrebbero interessarti anche...