Record data type

Record data type
  • 13
    Mar

Record data type

twittergoogle_pluslinkedin

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.