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é»
|