Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> software >> Software Database >> .

Come fare una PL /SQL pacchetto di Oracle

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 ;

/

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