Oracle lagrede procedurer er beskrevet præcis den måde, de interagerer . De er kodet procedurer ved hjælp af Oracle PL /SQL , som permanent bor i databasen. På denne måde Oracle pakker kan genbruges , og som deres oplysninger er i databasen og ikke holdt i separate kildefiler , er oplysningerne sikkert . Oprettelsen af Oracle pakker indebærer oprettelsen af en header , med angivelse af prototyper af funktioner og parametre , og kroppen af pakken , der indeholder selve koden. Både header og krop kan placeres i en enkelt tekst -fil , men god praksis foreskriver, at de skal opbevares hver for sig. Instruktioner
1
Opret to tekstfiler med en SQL-fil endelse. Denne tekst filer vil indeholde kildekoden til Oracle -pakken header og Oracle pakken kroppen hhv . De vil fungere som kilde kommandoer til at oprette pakken i databasen som en lagret procedure.
2
Input pakken header kommandoer til at oprette pakken. Rediger header fil og placere kommandoerne derind for at oprette funktionen prototyper. Den header filen specificerer til Oracle tolk hvad forventer når kompilere pakken kroppen i form af parametre og returværdier . Et eksempel på den pakke header er vist nedenfor : Hej
CREATE OR REPLACE PAKKENS update_planned_hrs
IS
Planned_hours NUMMER ( 4);
PROCEDURE set_new_planned ( p_emp_id i antal, p_project_id i antal, p_hours i antal ),
FUNKTION existing_planned ( p_emp_id i antal, p_project_id i antal) RETURN nummer
END update_planned_hrs ,
/< br > p Dette er en typisk pakke header. Den kan placeres i sin egen kilde fil eller i den samme kilde filen som pakken kroppen. Det er god praksis at holde de to i deres egne kildefiler , dog. Altid udføre pakkeskabelsesprocessen kommandoer ( header ) først
3
færdiggøre pakken ved at indtaste pakkens kroppens detaljer , svarende til header funktioner og parametre indtastet som så: .
< p> CREATE OR REPLACE emballagelegemet update_planned_hrs
ER
PROCEDURE set_new_planned ( p_emp_id i antal, p_project_id i antal, p_hours i antal)
ER
BEGIN
UPDATE 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 ;
UNDTAGELSE
HVORNÅR NO_DATA_FOUND sÅ
RAISE_APPLICATION_ERROR ( -20.100 ' Ingen sådan medarbejder eller projekt ');
END set_new_planned ;
FUNCTION existing_planned ( p_emp_id i antal, p_project_id i antal) RETURN NUMMER
ER
existing_hours NUMMER ( 4);
BEGIN
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 )
UNDTAGELSE
HVORNÅR NO_DATA_FOUND sÅ
RAISE_APPLICATION_ERROR ( -20.100 ' Ingen sådan medarbejder eller projekt ');
END existing_planned ; Salg
END update_planned_hrs ,
/
4
Test pakken fungerer ved hjælp af passende testdata. Dette vil indebære at kalde pakken fra kommandolinjen i Oracle sqlplus som følger : Hej
DECLARE
l_emp_id NUMMER ,
l_project_id nummer
BEGIN < br >
l_emp_id : = 1;
l_project_id : . = 12,
- Opnå de eksisterende planlagte timer for denne medarbejder ved hjælp af vedholdende pakke variable
update_planned . planned_hours = update_planned.existing_planned ( l_emp_id , l_project_id )
- Nu opdatere medarbejdernes 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 resultaterne
dbms_output.put_line ( »arbejdstager«