Come fare un Oracle PL / SQL pacchetto

August 4

Come fare un Oracle PL / SQL pacchetto


Oracle stored procedure sono descritte esattamente il modo in cui interagiscono. Essi sono codificate procedure utilizzando Oracle PL / SQL che risiedono permanentemente nel database. In questo modo i pacchetti Oracle possono essere riutilizzati e, come le loro informazioni si trova nel database e non tenuto in file sorgenti separati, le informazioni sono sicure. La creazione di pacchetti Oracle prevede la creazione di un'intestazione, specificando i prototipi di funzioni e parametri, e il corpo della confezione contenente il codice effettivo. Sia l'intestazione e il corpo possono essere collocati in un unico file di testo, ma le buone prassi impone che essi devono essere conservati individualmente.

istruzione

1 Creare due file di testo con un suffisso file SQL. Questo file di testo conterrà il codice sorgente per l'intestazione pacchetto di Oracle e il corpo del pacchetto Oracle, rispettivamente. Essi agiranno come comanda la sorgente per creare il pacchetto nel database come una stored procedure.

2 Input comanda l'intestazione del pacchetto 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 pacchetto in termini di parametri e valori di ritorno. Un esempio dell'intestazione del pacchetto è mostrato sotto:

CREARE O SOSTITUIRE update_planned_hrs PACCHETTO

È

Planned_hours NUMBER(4);

PROCEDURA set_new_planned (p_emp_id di numero, p_project_id di numero, p_hours in numero);

FUNZIONE existing_planned (p_emp_id di numero, p_project_id in numero) numero di rientro;

update_planned_hrs END;

/

Questa è un'intestazione di pacchetto tipico. Esso può essere collocato in un file sorgente o nello stesso file sorgente come corpo del pacchetto. E 'buona norma tenere i due nelle loro file sorgenti proprie, però. eseguire sempre i comandi di creazione pacchetto (l'intestazione) prima.

3 Completa il pacchetto inserendo i dettagli del corpo pacchetto, corrispondenti alle funzioni di intestazione e parametri immessi in questo modo:

CREARE O SOSTITUIRE PACCHETTO update_planned_hrs CORPO

È

PROCEDURA set_new_planned (p_emp_id di numero, p_project_id di numero, p_hours in numero)

È

INIZIO

UPDATE employee_on_activity EA

ea.ea_planned_hours SET = p_hours

DOVE

ea.ea_emp_id = p_emp_id

E ea.ea_proj_id = p_project_id;

ECCEZIONE

WHEN NO_DATA_FOUND THEN

RAISE_APPLICATION_ERROR (-20.100, 'No such dipendente o progetto');

END set_new_planned;

FUNZIONE existing_planned (p_emp_id di numero, p_project_id in numero) NUMERO DI RITORNO

È

existing_hours NUMERO (4);

INIZIO

ea.ea_planned_hours SELECT INTO existing_hours

DA employee_on_activity EA

DOVE

ea.ea_emp_id = p_emp_id

E ea.ea_proj_id = p_project_id;

RITORNO (existing_hours);

ECCEZIONE

WHEN NO_DATA_FOUND THEN

RAISE_APPLICATION_ERROR (-20.100, 'No such dipendente o progetto');

END existing_planned;

update_planned_hrs END;

/

4 Testare le opere dei pacchetti usando dati di test appropriati. Ciò comporterà chiamando il pacchetto dalla riga di comando in Oracle SQLPlus come segue:

DICHIARARE

NUMERO l_emp_id;

NUMERO l_project_id;

INIZIO

l_emp_id: = 1;

l_project_id: = 12;

- Ottenere le ore esistenti o previste 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 dei dipendenti previsto

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 i risultati.

dbms_output.put_line (|| l_emp_id 'dipendenti' || 'Progetto' || l_project_id || 'cambiato ore previsto di' || update_planned.planned_hours);

FINE;