procédures stockées Oracle sont décrits exactement la façon dont ils interagissent . Ils sont codés à l'aide de procédures Oracle PL /SQL qui réside en permanence dans la base de données. De cette façon packages Oracle peuvent être réutilisés et que leur information est à la base de données et non détenus dans des fichiers sources séparés , l'information est sécurisée. La création de packages Oracle implique la création d' un en-tête , en précisant les prototypes de fonctions et de paramètres , et le corps de l'emballage contenant le code. L'en-tête et le corps peuvent être placés dans un seul fichier texte , mais une bonne pratique dicte qu'ils doivent être stockés séparément. Instructions
1
créer deux fichiers texte avec une extension de fichier SQL. Ce fichier texte contient le code source de l'en-tête de paquet Oracle et le corps du package Oracle respectivement . Ils agiront comme les commandes de la source pour créer le package dans la base de données comme une procédure stockée.
2
entrée les commandes d'en-tête de paquet pour créer le package . Editez le fichier d'en-tête et placer les commandes là-bas pour créer les prototypes de fonction. Le fichier d'en-tête indique à l'interprète Oracle à quoi s'attendre lors de la compilation du corps de package en termes de paramètres et valeurs de retour . Un exemple de l'en-tête de paquet est indiqué ci-dessous :
CREATE OR REPLACE update_planned_hrs FORFAIT
Planned_hours NUMBER ( 4); PROCÉDURE DE
set_new_planned ( p_emp_id en nombre, p_project_id en nombre, p_hours en nombre) ;
FONCTION existing_planned ( p_emp_id en nombre, p_project_id en nombre) numéro de retour ;
update_planned_hrs finaux;
/< br >
c'est un en-tête de paquet typique . Elle peut être placée dans son propre fichier de source ou dans le même fichier de source que le corps de boîtier . Il est recommandé de garder les deux dans leurs propres fichiers source , cependant. Toujours exécuter les commandes de création de paquets ( la tête) premier
3
compléter le paquet en saisissant les détails de corps de paquet , correspondant aux fonctions d'en-tête et les paramètres entrés comme ceci: .
< p> CREATE OR REPLACE update_planned_hrs dU CORPS dE L'EMBALLAGE
est une procédure
set_new_planned ( p_emp_id en nombre, p_project_id en nombre, p_hours en nombre)
BEGIN Photos
UPDATE employee_on_activity ch
SET ea.ea_planned_hours = p_hours
OÙ
ea.ea_emp_id = p_emp_id
ET ea.ea_proj_id = p_project_id ;
EXCEPTION
Lorsque NO_DATA_FOUND ALORS
RAISE_APPLICATION_ERROR ( -20100 , ' Aucun employé ou d'un projet ');
FIN set_new_planned ;
FONCTION existing_planned ( p_emp_id en nombre, p_project_id en nombre) nombre de retour
existing_hours NUMBER ( 4);
BEGIN
SELECT ea . ea_planned_hours DANS existing_hours
DE employee_on_activity ch
OÙ
ea.ea_emp_id = p_emp_id
ET ea.ea_proj_id = p_project_id ;
RETURN ( existing_hours ) ;
EXCEPTION
Lorsque NO_DATA_FOUND ALORS
RAISE_APPLICATION_ERROR ( -20100 , ' Aucun employé ou d'un projet ');
FIN existing_planned ; Photos
update_planned_hrs finaux;
/
4
tester le package fonctionne en utilisant des données de test appropriées. Il s'agira d'appeler l'ensemble de la ligne de commande d'Oracle SQLPlus comme suit :
DECLARE
NOMBRE l_emp_id ;
NUMÉRO l_project_id ;
BEGIN < br >
l_emp_id : = 1;
l_project_id : . = 12;
- obtenir les heures planifiées existantes pour cet employé en utilisant la variable de package persistant
update_planned . planned_hours = update_planned.existing_planned ( l_emp_id , l_project_id ) ;
- maintenant mettre à jour les heures planifiées des employés
update_planned.planned_hours : = update_planned.planned_hours + 10 ;
update_planned . set_new_planned ( l_emp_id , l_project_id , update_planned.planned_hours ) ;
- Sortie des résultats
dbms_output.put_line ( «employé»