Oracle stored procedure sono descritti esattamente il modo in cui interagiscono. Si tratta di procedure codificate utilizzando Oracle PL/SQL che risiedono in modo permanente nel database. In questo modo Oracle pacchetti possono essere riutilizzati e, come loro informazioni nel database e non detenute nei file di origine separato, le informazioni sono al sicuro. La creazione di package Oracle prevede la creazione di un'intestazione, specificare i prototipi di funzioni e parametri e il corpo del pacchetto che contiene il codice effettivo. Sia l'intestazione e il corpo può essere collocati in un unico file di testo, ma buone prassi impone che essi devono essere conservati singolarmente.
Istruzioni
1
Creare due file di testo con un suffisso del file SQL. Questo file di testo conterrà il codice sorgente per l'intestazione del pacchetto di Oracle e il corpo package Oracle rispettivamente. Si comporteranno come i comandi di origine per creare il pacchetto nel database come una stored procedure.
2
Immettere i comandi di intestazione del pacchetto per creare il pacchetto. Modificare il file di intestazione e inserire i comandi in là per creare i prototipi di funzione. Il file di intestazione specifica per l'interprete di Oracle cosa aspettarsi quando si compila il corpo del package in termini di parametri e valori restituiti. Seguito è riportato un esempio dell'intestazione del pacchetto:
CREATE OR REPLACE PACKAGE update_planned_hrs
È
Planned_hours NUMBER(4);
PROCEDURE set_new_planned (p_emp_id IN NUMBER, p_project_id IN NUMBER, p_hours IN NUMBER);
FUNCTION existing_planned (p_emp_id IN NUMBER, p_project_id IN NUMBER) RETURN NUMBER;
FINE update_planned_hrs;
/
Si tratta di un'intestazione di pacchetto tipico. Può essere posizionato in un file di origine o nello stesso file di origine come il corpo del package. È buona norma tenere i due nei propri file di origine, tuttavia. In primo luogo vengono sempre eseguiti i comandi di creazione pacchetto (l'intestazione).
3
Completa il pacchetto inserendo i dettagli del pacchetto corpo, corrispondente ai parametri immessi e header funzioni come segue:
CREATE OR REPLACE PACKAGE BODY update_planned_hrs
È
PROCEDURA set_new_planned (p_emp_id IN numero, p_project_id IN numero, p_hours IN numero)
È
BEGIN
AGGIORNAMENTO employee_on_activity ea
SET ea.ea_planned_hours = p_hours
DOVE
ea.ea_emp_id = p_emp_id
AND ea.ea_proj_id = p_project_id;
ECCEZIONE
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR (-20100, 'No such employee or project');
FINE set_new_planned;
FUNZIONE existing_planned (p_emp_id IN numero, p_project_id IN numero) numero di restituzione
È
existing_hours NUMBER(4);
BEGIN
Ea.ea_planned_hours SELECT INTO existing_hours
DA employee_on_activity ea
DOVE
ea.ea_emp_id = p_emp_id
AND ea.ea_proj_id = p_project_id;
RITORNO (existing_hours);
ECCEZIONE
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR (-20100, 'No such employee or project');
FINE existing_planned;
FINE update_planned_hrs;
/
4
Testare il pacchetto funziona utilizzando i dati di test appropriato. Ciò comporterà chiamando il pacchetto dalla riga di comando in Oracle SQLPlus come segue:
DICHIARARE
l_emp_id numero;
l_project_id numero;
BEGIN
l_emp_id: = 1;
l_project_id: = 12;
-Ottenere le ore pianificate esistenti per questo dipendente utilizzando la variabile di pacchetto persistente.
update_planned.planned_hours = update_planned.existing_planned(l_emp_id,l_project_id);
-- Ora aggiornare il dipendente previsto ore
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 ' | | l_emp_id||' Progetto ' | | l_project_id | | 'Cambiato ore pianificate a' | | update_planned.planned_hours);
FINE;