August 4
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.
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;