Oracle Lessons

Lezioni Pratiche in Italiano

Creato da Pietro_Bonfigli il 11/03/2009

Area personale

 

Tag

 

Archivio messaggi

 
 << Luglio 2024 >> 
 
LuMaMeGiVeSaDo
 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
 
 

Cerca in questo Blog

  Trova
 

FACEBOOK

 
 

Ultime visite al Blog

marcop1973pixfaxhellingen666RiukaTerzo_Blog.GiusFDMDMFqwerty_alnicola.cambaraFilippoPaganellifrancocapoluanadiciommoaleale78alebherryraffaelesoldanoio_brina
 

Chi puņ scrivere sul blog

Solo l'autore puņ pubblicare messaggi in questo Blog e tutti gli utenti registrati possono pubblicare commenti.
 
RSS (Really simple syndication) Feed Atom
 
 

 

« Oracle Tipi Dati Astratt...Oracle Tipi Dati Astratt... »

Oracle Tipi Dati Astratti Lezione 6

Post n°32 pubblicato il 18 Agosto 2010 da Pietro_Bonfigli
 

  Metodi.

Per la creazione di una vista ad oggetto sulla tabella cliente sono stati definiti tipi di dato astratti utilizzati dalla tabella stessa. Questi tipi di dato aiutano a standardizzare la rappresentazione dei dati, ma hanno anche un altro scopo:

E‘ possibile definire metodi che si applichino ai tipi di dato.

Si consideri la Object View CLIENTE_OV:

create view CLIENTE_OV (Cliente_ID, Persona) as

select Cliente_ID,

PERSONA_TY(Nome,INDIRIZZO_TY(Via, Citta, Prov, Cap))

From CLIENTE. 

Questa vista applica i tipi di dato astratti PERSONA_TY, INDIRIZZO_TY, ai dati contenuti nella tabella CLIENTE. Se questi tipi di dato sono associati a dei metodi, questi potranno essere applicati ai dati della tabella.

Per la creazione dei metodi occorre utilizzare il comando create type body.

Prima di creare il corpo di un metodo, occorre assegnare a quest’ultimo un nome all’interno della dichiarazione del tipo di dati.

Vediamo ad esempio la seguente definizione di ANIMALI_TY:

create or replace type ANIMALE_TY as object

(Generazione varchar2(25),

Nome varchar2(25),

DataNascita date,

member function ETA(DataNascita in date) return number);

la linea:

member function ETA(DataNascita in date) return number

assegna un nome alla funzione che rappresenta un membro del tipo di dati ANIMALE_TY. Per definire la funzione ETA, occorre utilizzare il comando create type body, tale funzione restituirà l’età degli animali in giorni:

create or replace type body ANIMALE_TY as

member function Eta (DataNascita DATE) return number is

begin

return(Sysdate - DataNascita);

end;

Per codificare altre funzioni o procedure, è necessario specificarle all’interno dello stesso comando create type body, prima della clausola finale end.

Una qualunque tabella che utilizzi questo tipo di dati, sarà in grado di utilizzare la funzione ETA.

Nota.

Non è possibile eliminare o ricreare un tipo di dati astratto attualmente utilizzato nella definizione di una Table.

Vediamo un esempio di utilizzo del metodo ETA:

supponiamo di avere una tabella così definita

create table ANIMALE

(ID number,

Animale ANIMALE_TY);

Per utilizzare il metodo ETA in una select dobbiamo utilizzare la seguente sintassi:

select A.Animale.ETA(A.Animale.DataNascita)

from ANIMALE A;

Come accade con gli attributi di un tipo di dato astratto, è possibile fare riferimento ai metodi membro tramite i nomi delle colonne che utilizzano i tipi di dato (in questo caso ANIMALE.ETA). La chiamata al metodo ETA la esegue all’interno del tipo di dati ANIMALE_TY. Di conseguenza questo permette la memorizzazione all’interno del database di informazioni derivate che dipendono anche dal momento temporale di riferimento.

Osservazione.

L’informazione restituita dai metodi di un tipo di dati astratto, è memorizzata nella base di dati e dipende dall’istante temporale nella quale vien richiesta.

Gestione dei Metodi.

E’ possibile aggiungere nuovi metodi a un tipo di dati modificando il tipo di dati stesso (mediante il comando alter type). Per modificare il tipo di dati occorre elencare tutti i suoi metodi, sia vecchi che nuovi, la nuova struttura così verrà memorizzata al posto della vecchia. Completata la modifica del tipo di dati, occorre modificarne il corpo, elencando tutti i metodi del tipo di dati in un unico comando. Non è necessario concedere il privilegio EXECUTE sulle funzioni membro e sulle procedure dei tipi di dato astratti, infatti basta concederlo solo sul tipo di dati ed automaticamente questo utente disporra del privilegio EXECUTE sui metodi che fanno parte del tipo di dati.

Quando si creano funzioni membro, è possibile definirli come metodi mappa o metodi ordine (o non utilizzare nessuna delle due definizioni, come per la funzione ETA di ANIMALE_TY).

Metodo Mappa.

Restituisce la posizione relativa di un determinato record nell’ordinamento di tutti i record all’interno dell’oggetto. Il corpo di un tipo può contenere solo un metodo mappa, che deve essere una funzione.

Metodo Ordine.

E’ una funzione membro che accetta un record dell’oggetto come argomento esplicito e restituisce un valore intero. A seconda se il valore restituito è negativo, zero o positivo, l’argomento “implicito” autonomo della funzione è rispettivamente minore, uguale, o maggiore del valore del record specificato esplicitamente. Quando all’interno di un’Oggetto vengono confrontate più righe in una clausola order by , il metodo ordine viene eseguito automaticamente per ordinare le righe restituite. La specifica del tipo di dati deve contenere un solo metodo ordine, che deve essere una funzione con tipo di restituzione INTEGER.

 
 
 
Vai alla Home Page del blog
 
 

© Italiaonline S.p.A. 2024Direzione e coordinamento di Libero Acquisition S.á r.l.P. IVA 03970540963