Oracle gespeicherten Prozeduren werden genau so, wie sie interagieren beschrieben . Sie sind Prozeduren mit Oracle PL /SQL , die dauerhaft in der Datenbank gespeichert sind codiert. Auf diese Weise Oracle Verpackungen können wiederverwendet werden , da ihre Informationen in der Datenbank und nicht in separaten Quelldateien gehalten , die Informationen sicher. Die Erstellung von Oracle-Paketen beinhaltet die Schaffung eines Headers , unter Angabe der Prototypen von Funktionen und Parameter , und der Körper des Pakets mit den eigentlichen Code . Sowohl die Kopf-und Körper kann in einer einzigen Textdatei platziert werden , aber gute Praxis verlangt, dass sie einzeln gespeichert werden sollen. Anleitung
1
Erstellen Sie zwei Textdateien mit einer SQL-Datei -Suffix . Diese Textdateien werden den Quellcode für die Oracle-Paket -Header und dem Oracle-Paket enthalten jeweils Körper . Sie werden wie die Quelle -Befehle handeln, um das Paket in der Datenbank zu erstellen als eine gespeicherte Prozedur .
2
Eingang des Pakets Header -Befehle , um das Paket zu erstellen. Bearbeiten Sie die Header-Datei und legen Sie die Befehle in dort, um die Funktions-Prototypen zu erstellen. Die Header-Datei gibt an, die Oracle -Interpreter , was sie erwartet, wenn dem Kompilieren des Pakets Körper in Form von Parametern und Rückgabewerten . Ein Beispiel für den Paket -Header ist unten dargestellt:
CREATE OR REPLACE PACKAGE update_planned_hrs
IS
Planned_hours NUMBER ( 4);
VERFAHREN set_new_planned ( p_emp_id an der Zahl, IN NUMBER p_project_id , p_hours IN NUMBER) ;
FUNKTION existing_planned ( p_emp_id an der Zahl, p_project_id IN NUMBER) RETURN NUMBER ;
END update_planned_hrs ;
/
Dies ist ein typisches Paket -Header. Es kann in einem eigenen Quelle oder in der gleichen Quelle wie der Gehäusekörper platziert werden. Es ist eine gute Übung , um die beiden in ihre eigenen Quelldateien zu halten , jedoch. Immer führen Sie das Paket Schaffung Befehle ( die Kopfzeile ) erste
3
runden das Paket ab , indem Sie die Paketkörper Details entsprechend der Header-Funktionen und Parameter eingegeben etwa so: .
< p> CREATE OR REPLACE PACKAGE BODY update_planned_hrs
IS
VERFAHREN set_new_planned ( p_emp_id an der Zahl, p_project_id an der Zahl, p_hours IN NUMBER)
BEGIN
UPDATE employee_on_activity ea
SET ea.ea_planned_hours = p_hours
WHERE
ea.ea_emp_id = p_emp_id
UND ea.ea_proj_id = p_project_id ;
AUSNAHME
WENN DANN NO_DATA_FOUND
RAISE_APPLICATION_ERROR ( -20100 , ' No such Mitarbeiter oder Projekt ');
END set_new_planned ;
FUNKTION existing_planned ( p_emp_id an der Zahl, p_project_id IN NUMBER) RETURN NUMBER
IS
existing_hours NUMBER ( 4);
BEGIN
SELECT ea . ea_planned_hours INTO existing_hours
FROM employee_on_activity ea
WHERE
ea.ea_emp_id = p_emp_id
UND ea.ea_proj_id = p_project_id ;
RETURN ( existing_hours );
AUSNAHME
WENN DANN NO_DATA_FOUND
RAISE_APPLICATION_ERROR ( -20100 , ' No such Mitarbeiter oder Projekt ');
END existing_planned ;
END update_planned_hrs ;
/
4
Testen Sie das Paket funktioniert durch die Verwendung geeigneter Testdaten . Dies beinhaltet das Paket Aufruf von der Kommandozeile in Oracle SQLPlus wie folgt:
DECLARE
l_emp_id NUMBER ;
l_project_id NUMBER ;
BEGIN
l_emp_id : = 1;
l_project_id : . = 12;
- Besorgen Sie sich die vorhandenen geplanten Stunden für diesen Mitarbeiter mit dem persistant Paketvariable
update_planned . planned_hours = update_planned.existing_planned ( l_emp_id , l_project_id );
- Jetzt aktualisieren die Mitarbeiter geplanten Stunden
update_planned.planned_hours : = update_planned.planned_hours + 10;
update_planned . set_new_planned ( l_emp_id , l_project_id , update_planned.planned_hours );
- Ausgabe die Ergebnisse
dbms_output.put_line ( 'Mitarbeiter '