Oracle lagrede prosedyrer er beskrevet akkurat slik de samhandler . De er kodet prosedyrer ved hjelp av Oracle PL /SQL som permanent bor i databasen. På denne måten Oracle pakker kan gjenbrukes , og som deres informasjon er i databasen og ikke holdt i separate kildefilene , er informasjonen sikker. Opprettelsen av Oracle pakker innebærer etableringen av en header , med angivelse av prototyper av funksjoner og parametre , og kroppen av pakken som inneholder selve koden . Både overskriften og kroppen kan plasseres i en enkelt tekstfil , men god praksis tilsier at de bør lagres individuelt . Instruksjoner
en
Lag to tekstfiler med en SQL filsuffiks . Dette tekstfiler vil inneholde kildekoden for Oracle pakken header og Oracle pakke kroppen hhv . De vil fungere som kilde kommandoer for å opprette pakken i databasen som en lagret prosedyre .
2
Input pakken header kommandoer for å opprette pakken . Redigere header -fil og plassere kommandoene i det å skape funksjonen prototyper. Overskriften fila spesifiserer til Oracle tolk hva du kan forvente når kompilere pakken kroppen i form av parametere og returnerer verdier . Et eksempel på pakken header er vist nedenfor :
CREATE OR REPLACE PAKKE update_planned_hrs
IS
Planned_hours NUMMER ( 4 ) ;
PROSEDYRE set_new_planned ( p_emp_id I ANTALL , p_project_id i antall, p_hours i antall) ;
FUNKSJON existing_planned ( p_emp_id i antall, p_project_id i antall) RETURN NUMMER ;
END update_planned_hrs ;
/
p Dette er en typisk pakke spissen. Det kan plasseres i sin egen kilde fil eller i samme kilde fil som pakken legeme . Det er god praksis å holde de to i sine egne kildefilene , imidlertid. Utfør alltid pakken opprettelse kommandoer ( overskriften ) først
3
fullføre pakken ved å oppgi pakken kroppens detaljer , tilsvarende header funksjoner og parametre angitt slik: .
< p> CREATE OR REPLACE PAKKE BODY update_planned_hrs
ER
PROSEDYRE set_new_planned ( p_emp_id i antall, p_project_id i antall, p_hours i antall)
er å begynne
OPPDATERING employee_on_activity ea
SET ea.ea_planned_hours = p_hours
HVOR
ea.ea_emp_id = p_emp_id
OG ea.ea_proj_id = p_project_id ;
UNNTAK
NÅR NO_DATA_FOUND sÅ
RAISE_APPLICATION_ERROR ( -20100 , ' Ingen slik ansatt eller prosjekt ');
END set_new_planned ;
FUNKSJON existing_planned ( p_emp_id i antall, p_project_id i antall) RETURN NUMMER
ER
existing_hours NUMMER ( 4 ) ;
START
SELECT ea . ea_planned_hours TIL existing_hours
FRA employee_on_activity ea
HVOR
ea.ea_emp_id = p_emp_id
OG ea.ea_proj_id = p_project_id ;
RETURN ( existing_hours ) ;
UNNTAK
NÅR NO_DATA_FOUND sÅ
RAISE_APPLICATION_ERROR ( -20100 , ' Ingen slik ansatt eller prosjekt ');
END existing_planned ;
END update_planned_hrs ;
/
4
Test pakken fungerer ved hjelp av egnede testdata . Dette vil innebære å kalle pakken fra kommandolinjen i Oracle sqlplus som følger : en
DECLARE
l_emp_id NUMMER ;
l_project_id NUMMER ;
BEGIN
l_emp_id : = 1 ;
l_project_id : . = 12;
- Få tak i de eksisterende planlagte timer for denne ansatte med vedvarende pakke variabel
update_planned . planned_hours = update_planned.existing_planned ( l_emp_id , l_project_id ) ;
- Nå oppdaterer de ansattes planlagte timer
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 resultatene
dbms_output.put_line (' ansatt '