Oracle stored procedure sono descritte esattamente il modo in cui interagiscono . Sono codificate procedure utilizzando Oracle PL /SQL che risiedono in modo permanente nel database. In questo modo i pacchetti Oracle possono essere riutilizzati e , come le loro informazioni è nel database e non tenuto in file di origine distinti , le informazioni sono al sicuro . La creazione di pacchetti Oracle comporta la creazione di una intestazione , specificando i prototipi di funzioni e parametri , e il corpo del pacchetto contenente il codice effettivo . Sia l'intestazione e il corpo possono essere inserite in un unico file di testo , ma buona prassi impone che essi devono essere conservati separatamente. Istruzioni
1
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 ;
/< br >
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: .
< p > 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 < br >
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 '