Nwlapcug.com


Come fare un pacchetto di PL/SQL di Oracle

Come fare un pacchetto di PL/SQL di Oracle


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;