Oracle stored procedures zijn beschreven precies de manier waarop ze op elkaar inwerken . Ze worden gecodeerd procedures Oracle PL /SQL die permanent in de database bevinden . Hierdoor Oracle pakketten kunnen worden hergebruikt, en hun gegevens in de database en niet in afzonderlijke bronbestanden , de informatie veilig . De oprichting van Oracle pakketten omvat de oprichting van een header , waarin de prototypes van functies en parameters , en het lichaam van het pakket met de eigenlijke code . Zowel de kop en het lichaam kan worden geplaatst in een tekstbestand , maar goede praktijk dicteert dat zij individueel moeten worden opgeslagen . Instructies 1 Maak twee tekstbestanden met een SQL -bestand achtervoegsel . Deze tekstbestanden zal de source code bevatten voor de Oracle -pakket respectievelijk header en het Oracle pakket lichaam . Zij zullen fungeren als de bron commando's om het pakket te maken in de database als een opgeslagen procedure . Ingang 2 van het pakket header commando's om het pakket te maken . Bewerk het header-bestand en plaats het commando daar om de functie prototypes te maken . Het header bestand geeft aan de Oracle tolk wat te verwachten bij het opstellen van het pakket lichaam in termen van parameters en return waarden . Een voorbeeld van het pakket header wordt hieronder weergegeven : Scheppen of te vervangen PAKKET update_planned_hrs IS Planned_hours NUMMER ( 4 ) ; PROCEDURE set_new_planned ( p_emp_id IN NUMMER , p_project_id IN AANTAL , p_hours IN AANTAL ) ; FUNCTIE existing_planned ( p_emp_id IN AANTAL , p_project_id IN NUMMER ) RETURN NUMMER ; END update_planned_hrs ; /< br > p Dit is een typisch pakket header . Het kan worden geplaatst in zijn eigen bronbestand of dezelfde bronbestand als het verpakkingslichaam . Het is een goede gewoonte om de twee te houden in hun eigen bronbestanden echter . Voeren altijd de creatie commando -pakket ( de header ) eerste 3 Vul het pakket door het invoeren van het pakket lichaam gegevens , overeenkomend met de functies en parameters header ingevuld als volgt: . Scheppen of te vervangen PAKKET BODY update_planned_hrs IS PROCEDURE set_new_planned ( p_emp_id IN AANTAL , p_project_id IN AANTAL , p_hours IN AANTAL ) op Twitter IS BEGINT UPDATE employee_on_activity ea SET ea.ea_planned_hours = p_hours WAAR ea.ea_emp_id = p_emp_id EN ea.ea_proj_id = p_project_id ; UITZONDERING WANNEER nO_DATA_FOUND DAN RAISE_APPLICATION_ERROR ( -20100 , ' geen dergelijke werknemer of project ' ) ; END set_new_planned ; FUNCTIE existing_planned ( p_emp_id IN AANTAL , p_project_id IN NUMMER ) RETURN NUMMER IS existing_hours NUMMER ( 4 ) ; BEGIN SELECT ea . ea_planned_hours INTO existing_hours VAN employee_on_activity ea WAAR ea.ea_emp_id = p_emp_id EN ea.ea_proj_id = p_project_id ; RETURN ( existing_hours ) ; UITZONDERING WANNEER nO_DATA_FOUND DAN RAISE_APPLICATION_ERROR ( -20100 , ' geen dergelijke werknemer of project ' ) ; END existing_planned ; END update_planned_hrs ; / Test 4 het pakket werkt met behulp van geschikte testgegevens . Dit houdt belt het pakket vanaf de opdrachtregel in Oracle SQLPlus als volgt : DECLARE l_emp_id NUMMER ; l_project_id NUMMER ; BEGIN < br > l_emp_id : = 1 ; l_project_id : . = 12 ; - het verkrijgen van de bestaande geplande uren voor deze werknemer met behulp van de aanhoudende pakket variabele update_planned . planned_hours = update_planned.existing_planned ( l_emp_id , l_project_id ) ; - Nu werken de werknemer geplande uren 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 de resultaten dbms_output.put_line ( ' Medewerker ' | | l_emp_id | | ' Project ' | | l_project_id | | ' . veranderd geplande uur aan ' | | update_planned.planned_hours ) ; END ;
|