creare due file di testo con un suffisso di file SQL . Questo file di testo conterrà il codice sorgente per l'intestazione del pacchetto Oracle e il corpo package Oracle rispettivamente . Essi agiranno come i comandi di origine per creare il pacchetto nel database come una stored procedure . 
 2 
 ingresso i comandi di intestazione dei pacchetti per creare il pacchetto . Modificare il file di intestazione e posizionare i comandi in là per creare i prototipi di funzione . Il file di intestazione specifica all'interprete Oracle cosa aspettarsi quando si compila il corpo del pacchetto in termini di parametri e valori di ritorno . Un esempio dell'intestazione del pacchetto è la seguente : 
 
 creare o sostituire update_planned_hrs pacchetto 
 
 
 
 NUMERO Planned_hours ( 4) ; 
 
 PROCEDURA set_new_planned ( p_emp_id IN NUMERO , p_project_id IN NUMERO , p_hours in numero) ; 
 
 FUNZIONE existing_planned ( p_emp_id IN NUMERO , p_project_id in numero) numero di rientro ; 
 
 update_planned_hrs END ; 
 
 /
 
 Questo è un tipico colpo di testa pacchetto . Esso può essere collocato in un proprio file sorgente o nello stesso file sorgente come corpo del pacchetto . E ' buona norma tenere i due nelle loro file di origine , tuttavia. Eseguire i comandi di creazione del pacchetto ( l'intestazione ) primo 
 3 
 completare il pacchetto inserendo il pacchetto dettagli del corpo , corrispondenti alle funzioni di intestazione e parametri inseriti in questo modo: . 
 
 CREATE OR REPLACE update_planned_hrs corpo del pacchetto 
 
 IS 
 
 PROCEDURA set_new_planned ( p_emp_id IN NUMERO , p_project_id IN NUMERO , p_hours in numero) 
 
 VIENE 
 
 BEGIN 
 
 AGGIORNAMENTO employee_on_activity EA 
 
 SET ea.ea_planned_hours = p_hours 
 
 DOVE 
 
 ea.ea_emp_id = p_emp_id 
 
 E ea.ea_proj_id = p_project_id ; 
 
 ECCEZIONE 
 
 QUANDO NO_DATA_FOUND ALLORA 
 
 RAISE_APPLICATION_ERROR ( -20.100 , ' Nessuna tale dipendente o progetto '); 
 
 END set_new_planned ; 
 
 FUNZIONE existing_planned ( p_emp_id IN NUMERO , p_project_id IN NUMERO ) RITORNO NUMERO 
 
 IS 
 
 NUMERO existing_hours ( 4) ; 
 
 BEGIN 
 
 SELEZIONA EA . ea_planned_hours IN existing_hours 
 
 DA employee_on_activity EA 
 
 DOVE 
 
 ea.ea_emp_id = p_emp_id 
 
 E ea.ea_proj_id = p_project_id ; 
 
 RETURN ( existing_hours ) ; 
 
 ECCEZIONE 
 
 QUANDO NO_DATA_FOUND ALLORA 
 
 RAISE_APPLICATION_ERROR ( -20.100 , ' Nessuna tale dipendente o progetto '); 
 
 END existing_planned ; 
 
 update_planned_hrs END ; 
 
 /
 4 
 prova il pacchetto funziona utilizzando opportuni dati di test . Ciò comporterà chiamando il pacchetto dalla riga di comando in Oracle SQLPlus come segue : 
 
 DECLARE 
 
 NUMERO l_emp_id ; 
 
 NUMERO l_project_id ; 
 
 BEGIN 
 
 l_emp_id : = 1 ; 
 
 l_project_id : . = 12; 
 
 - ottenere le ore pianificate esistenti per questo dipendente utilizzando la variabile del pacchetto persistente 
 
 update_planned . planned_hours = update_planned.existing_planned ( l_emp_id , l_project_id ) ; 
 
 - ora aggiornare le ore programmate dipendenti 
 
 update_planned.planned_hours : = update_planned.planned_hours + 10 ; 
 
 update_planned . set_new_planned ( l_emp_id , l_project_id , update_planned.planned_hours ) ; 
 
 - Output dei risultati 
 
dbms_output.put_line ( ' Dipendente '
software © www.354353.com