La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

C. Bonnet / R. Chapuis Cours PL/SQL daprès cours ORACLE - OAI Procédures Stockées.

Présentations similaires


Présentation au sujet: "C. Bonnet / R. Chapuis Cours PL/SQL daprès cours ORACLE - OAI Procédures Stockées."— Transcription de la présentation:

1 C. Bonnet / R. Chapuis Cours PL/SQL daprès cours ORACLE - OAI Procédures Stockées

2 Cours PL/SQL daprès cours ORACLE - OAI / 2 C. Bonnet / R. Chapuis Généralités Une procédure est un bloc PL/SQL nommé qui exécute une action. Une procédure est stockée dans la base données Une procédure est un objet réutilisable. Une procédure est un bloc PL/SQL nommé qui exécute une action. Une procédure est stockée dans la base données Une procédure est un objet réutilisable.

3 Cours PL/SQL daprès cours ORACLE - OAI / 3 C. Bonnet / R. Chapuis Structure dune procédure PL/SQL EntêteIS Section déclarative BEGIN Section exécution [EXCEPTION Section Exception] END;EntêteIS Section déclarative BEGIN Section exécution [EXCEPTION Section Exception] END;

4 Cours PL/SQL daprès cours ORACLE - OAI / 4 C. Bonnet / R. Chapuis Syntaxe pour créer une procédure CREATE [OR REPLACE] PROCEDURE nom_procédure (paramètre1 [mode1] type1, paramètre2 [mode2] type2,... IS [AS] PL/SQL Block; -- corps de la procédure CREATE [OR REPLACE] PROCEDURE nom_procédure (paramètre1 [mode1] type1, paramètre2 [mode2] type2,... IS [AS] PL/SQL Block; -- corps de la procédure

5 Cours PL/SQL daprès cours ORACLE - OAI / 5 C. Bonnet / R. Chapuis Développement dune procédure Fichier source Code Source p-code Edit Stocké dans la base Compilation Exécution 1 2 Editeur OracleProcedureBuilder

6 Cours PL/SQL daprès cours ORACLE - OAI / 6 C. Bonnet / R. Chapuis Développement d une procédure avec SQL*Plus 1.Saisir le texte de lordre CREATE PROCEDURE avec un éditeur et le sauver sous forme de fichier source (extension.sql ). 2.Sous SQL*Plus, exécuter le script par START. 3.Appeler la procédure pour lexécuter.

7 Cours PL/SQL daprès cours ORACLE - OAI / 7 C. Bonnet / R. Chapuis Paramètre de procédure Environnement dappel Procédure(DECLARE)BEGINEXCEPTIONEND; IN paramètre OUT paramètre IN OUT paramètre

8 Cours PL/SQL daprès cours ORACLE - OAI / 8 C. Bonnet / R. Chapuis IN OUT Doit être spécifié Valeur transmise à la procédure et renvoyée à lenvironnement variable initialisée variable OUT Doit être spécifié Valeur transmise à lenvironnement variable non initialisée variable Mode dun paramètre IN Par défaut Valeur transmise à la procédure paramètre formel variable ou constante paramètre effectif variable, constante ou expression

9 Cours PL/SQL daprès cours ORACLE - OAI / 9 C. Bonnet / R. Chapuis Mode IN : Exemple SQL> CREATE OR REPLACE PROCEDURE raise_salary 2 (v_id in emp.empno%TYPE) 3 IS 4 BEGIN 5UPDATE emp 6SET sal = sal * WHERE empno = v_id; 8 END raise_salary; 9 / Procedure created. SQL> EXECUTE raise_salary (7369) PL/SQL procedure successfully completed. SQL> CREATE OR REPLACE PROCEDURE raise_salary 2 (v_id in emp.empno%TYPE) 3 IS 4 BEGIN 5UPDATE emp 6SET sal = sal * WHERE empno = v_id; 8 END raise_salary; 9 / Procedure created. SQL> EXECUTE raise_salary (7369) PL/SQL procedure successfully completed. v_id7369

10 Cours PL/SQL daprès cours ORACLE - OAI / 10 C. Bonnet / R. Chapuis Mode OUT : Exemple Environnement Procédure QUERY_EMP 7654 v_id v_name v_salary v_ comm MARTIN

11 Cours PL/SQL daprès cours ORACLE - OAI / 11 C. Bonnet / R. Chapuis Mode OUT : Exemple SQL> CREATE OR REPLACE PROCEDURE query_emp 1 (v_id INemp.empno%TYPE, 2 v_name OUTemp.ename%TYPE, 3 v_salary OUTemp.sal%TYPE, 4 v_comm OUTemp.comm%TYPE) 5 IS 6 BEGIN 7 SELECT ename, sal, comm 8 INTO v_name, v_salary, v_comm 9 FROM emp 10 WHERE empno = v_id; 11 END query_emp; 12 / SQL> CREATE OR REPLACE PROCEDURE query_emp 1 (v_id INemp.empno%TYPE, 2 v_name OUTemp.ename%TYPE, 3 v_salary OUTemp.sal%TYPE, 4 v_comm OUTemp.comm%TYPE) 5 IS 6 BEGIN 7 SELECT ename, sal, comm 8 INTO v_name, v_salary, v_comm 9 FROM emp 10 WHERE empno = v_id; 11 END query_emp; 12 /

12 Cours PL/SQL daprès cours ORACLE - OAI / 12 C. Bonnet / R. Chapuis Mode OUT et SQL*Plus SQL> START emp_query.sql Procedure created. SQL> START emp_query.sql Procedure created. SQL> VARIABLE g_name varchar2(15) SQL> VARIABLE g_salarynumber SQL> VARIABLE g_comm number SQL> VARIABLE g_name varchar2(15) SQL> VARIABLE g_salarynumber SQL> VARIABLE g_comm number SQL> EXECUTE query_emp (7654, :g_name, :g_salary, 2 :g_comm) PL/SQL procedure successfully completed. SQL> EXECUTE query_emp (7654, :g_name, :g_salary, 2 :g_comm) PL/SQL procedure successfully completed. SQL> PRINT g_name G_NAME MARTIN SQL> PRINT g_name G_NAME MARTIN

13 Cours PL/SQL daprès cours ORACLE - OAI / 13 C. Bonnet / R. Chapuis Mode IN OUT : Exemple SQL> CREATE OR REPLACE PROCEDURE format_phone 2 (v_phone_no IN OUT VARCHAR2) 3 IS 4 BEGIN 5 v_phone_no := '(' || SUBSTR(v_phone_no,1,3) || 6 ')' || SUBSTR(v_phone_no,4,3) || 7 '-' || SUBSTR(v_phone_no,7); 8 END format_phone; 9 / Environnement Procédure FORMAT_PHONE v_phone_no '(800) '' '

14 Cours PL/SQL daprès cours ORACLE - OAI / 14 C. Bonnet / R. Chapuis Appel dune procédure dans SQL*Plus SQL>VARIABLE g_phone_no varchar2(15) SQL> BEGIN :g_phone_no := ' '; END; 2 / PL/SQL procedure successfully completed. SQL> EXECUTE format_phone (:g_phone_no) PL/SQL procedure successfully completed. SQL> PRINT g_phone_no SQL>VARIABLE g_phone_no varchar2(15) SQL> BEGIN :g_phone_no := ' '; END; 2 / PL/SQL procedure successfully completed. SQL> EXECUTE format_phone (:g_phone_no) PL/SQL procedure successfully completed. SQL> PRINT g_phone_no G_PHONE_NO (800) G_PHONE_NO (800)

15 Cours PL/SQL daprès cours ORACLE - OAI / 15 C. Bonnet / R. Chapuis Appel dune procédure dans un bloc PL/SQL DECLARE v_id NUMBER := 7900; BEGIN raise_salary(v_id); --appel procédure par son nom COMMIT;... END; DECLARE v_id NUMBER := 7900; BEGIN raise_salary(v_id); --appel procédure par son nom COMMIT;... END;

16 Cours PL/SQL daprès cours ORACLE - OAI / 16 C. Bonnet / R. Chapuis Appel dune procédure dans une autre procédure SQL> CREATE OR REPLACE PROCEDURE process_emps 2 IS 3 CURSOR emp_cursor IS 4 SELECT empno 5 FROM emp; 6 BEGIN 7 FOR emp_rec IN emp_cursor LOOP 8 raise_salary(emp_rec.empno); --appel procédure par son nom 9 END LOOP; 10 COMMIT; 11 END process_emps; 12 / SQL> CREATE OR REPLACE PROCEDURE process_emps 2 IS 3 CURSOR emp_cursor IS 4 SELECT empno 5 FROM emp; 6 BEGIN 7 FOR emp_rec IN emp_cursor LOOP 8 raise_salary(emp_rec.empno); --appel procédure par son nom 9 END LOOP; 10 COMMIT; 11 END process_emps; 12 /

17 Cours PL/SQL daprès cours ORACLE - OAI / 17 C. Bonnet / R. Chapuis Transmission des valeurs de paramètres Par position Par Nom ( =>) Combinaison Par position Par Nom ( =>) Combinaison

18 Cours PL/SQL daprès cours ORACLE - OAI / 18 C. Bonnet / R. Chapuis Transmission des valeurs de paramètres - exemple SQL> CREATE OR REPLACE PROCEDURE add_dept 1 (v_name IN dept.dname%TYPE DEFAULT 'unknown', 2 v_loc IN dept.loc%TYPE DEFAULT 'unknown') 3 IS 4 BEGIN 5 INSERT INTO dept 6 VALUES (dept_deptno.NEXTVAL, v_name, v_loc); 7 END add_dept; 8 / SQL> CREATE OR REPLACE PROCEDURE add_dept 1 (v_name IN dept.dname%TYPE DEFAULT 'unknown', 2 v_loc IN dept.loc%TYPE DEFAULT 'unknown') 3 IS 4 BEGIN 5 INSERT INTO dept 6 VALUES (dept_deptno.NEXTVAL, v_name, v_loc); 7 END add_dept; 8 /

19 Cours PL/SQL daprès cours ORACLE - OAI / 19 C. Bonnet / R. Chapuis Transmission des valeurs de paramètres - exemple SQL> begin 2 add_dept; 3 add_dept ( 'TRAINING', 'NEW YORK'); 4 add_dept ( v_loc => 'DALLAS', v_name => 'EDUCATION') ; 5 add_dept ( v_loc => 'BOSTON') ; 6 end; 7 / PL/SQL procedure successfully completed. SQL> begin 2 add_dept; 3 add_dept ( 'TRAINING', 'NEW YORK'); 4 add_dept ( v_loc => 'DALLAS', v_name => 'EDUCATION') ; 5 add_dept ( v_loc => 'BOSTON') ; 6 end; 7 / PL/SQL procedure successfully completed. SQL>SELECT * FROM dept; DEPTNODNAMELOC unknownunknown 42TRAININGNEW YORK 43EDUCATIONDALLAS 44 unknownBOSTON SQL>SELECT * FROM dept; DEPTNODNAMELOC unknownunknown 42TRAININGNEW YORK 43EDUCATIONDALLAS 44 unknownBOSTON

20 Cours PL/SQL daprès cours ORACLE - OAI / 20 C. Bonnet / R. Chapuis Suppression dune Procédure Par SQL*Plus: Ordre Drop procédure Syntaxe Exemple Par SQL*Plus: Ordre Drop procédure Syntaxe Exemple DROP PROCEDURE nom_procédure; SQL> DROP PROCEDURE raise_salary; Procedure dropped. SQL> DROP PROCEDURE raise_salary; Procedure dropped.

21 C. Bonnet / R. Chapuis Cours PL/SQL daprès cours ORACLE - OAI Fonctions stockées

22 Cours PL/SQL daprès cours ORACLE - OAI / 22 C. Bonnet / R. Chapuis Généralités Une fonction est un bloc PL/SQL nommé qui exprime une action. Une fonction renvoie une et une seule valeur. Une fonction est stockée dans la base données Une fonction est un objet réutilisable.. Une fonction stockée (fonction utilisateur) peut être utilisée dans une expression. Une fonction est un bloc PL/SQL nommé qui exprime une action. Une fonction renvoie une et une seule valeur. Une fonction est stockée dans la base données Une fonction est un objet réutilisable.. Une fonction stockée (fonction utilisateur) peut être utilisée dans une expression.

23 Cours PL/SQL daprès cours ORACLE - OAI / 23 C. Bonnet / R. Chapuis Structure dune fonction PL/SQL EntêteIS Section déclarative BEGIN Section exécution [EXCEPTION Section Exception] END;EntêteIS Section déclarative BEGIN Section exécution [EXCEPTION Section Exception] END;

24 Cours PL/SQL daprès cours ORACLE - OAI / 24 C. Bonnet / R. Chapuis Syntaxe pour créer une Fonction CREATE [OR REPLACE] FUNCTION nom_fonction (paramètre1 [mode1] type1, paramètre2 [mode2] type2,... RETURN type -- type de la valeur résultat IS|AS PL/SQL Block; -- corps de la fonction CREATE [OR REPLACE] FUNCTION nom_fonction (paramètre1 [mode1] type1, paramètre2 [mode2] type2,... RETURN type -- type de la valeur résultat IS|AS PL/SQL Block; -- corps de la fonction

25 Cours PL/SQL daprès cours ORACLE - OAI / 25 C. Bonnet / R. Chapuis Développement dune fonction Fichier source Code Source p-code Edit Stocké dans la base Compilation Exécution 1 2 Editeur OracleProcedureBuilder

26 Cours PL/SQL daprès cours ORACLE - OAI / 26 C. Bonnet / R. Chapuis Développement dune fonction avec SQL*Plus 1.Saisir le texte de lordre CREATE FUNCTION avec un éditeur et le sauver sous forme de fichier source (extension.sql ). 2.Sous SQL*Plus, exécuter le script par START. 3.Appeler la fonction pour lexécuter.

27 Cours PL/SQL daprès cours ORACLE - OAI / 27 C. Bonnet / R. Chapuis Création dune fonction avec SQL*Plus : Exemple SQL> CREATE OR REPLACE FUNCTION get_sal 2 (v_id IN emp.empno%TYPE) 3 RETURN NUMBER 4 IS 5 v_salaryemp.sal%TYPE :=0; 6 BEGIN 7 SELECT sal 8 INTO v_salary 9 FROM emp 10 WHERE empno = v_id; 11 RETURN (v_salary); 12 END get_sal; 13 / SQL> CREATE OR REPLACE FUNCTION get_sal 2 (v_id IN emp.empno%TYPE) 3 RETURN NUMBER 4 IS 5 v_salaryemp.sal%TYPE :=0; 6 BEGIN 7 SELECT sal 8 INTO v_salary 9 FROM emp 10 WHERE empno = v_id; 11 RETURN (v_salary); 12 END get_sal; 13 /

28 Cours PL/SQL daprès cours ORACLE - OAI / 28 C. Bonnet / R. Chapuis Exécution dune Fonction Utilisation dans une expression PL/SQL de façon identique à une fonction prédéfinie. Allocation une variable de lien pour recevoir le résultat de la fonction et exécution de la fonction. Utilisation dans une expression PL/SQL de façon identique à une fonction prédéfinie. Allocation une variable de lien pour recevoir le résultat de la fonction et exécution de la fonction.

29 Cours PL/SQL daprès cours ORACLE - OAI / 29 C. Bonnet / R. Chapuis Exécution d une Fonction avec SQL*Plus : Exemple Environnement dappel Fonction GET_SAL v_id 7934 RETURN v_salary START get_salary.sql SQL> START get_salary.sql Procedure created Procedure created. SQL> VARIABLE g_salary number SQL> EXECUTE :g_salary := get_sal(7934) PL/SQL procedure successfully completed. SQL> EXECUTE :g_salary := get_sal(7934) PL/SQL procedure successfully completed. SQL> PRINT g_salary G_SALARY SQL> PRINT g_salary G_SALARY

30 Cours PL/SQL daprès cours ORACLE - OAI / 30 C. Bonnet / R. Chapuis Utilisation dune fonction Dans la liste de projection dun ordre SELECT. Dans un prédicat dune clause WHERE ou HAVING. Dans les clauses CONNECT BY, START WITH, ORDER BY, et GROUP BY. Dans la clause VALUES dun ordre INSERT. Dans la clause SET dun ordre UPDATE. Dans la liste de projection dun ordre SELECT. Dans un prédicat dune clause WHERE ou HAVING. Dans les clauses CONNECT BY, START WITH, ORDER BY, et GROUP BY. Dans la clause VALUES dun ordre INSERT. Dans la clause SET dun ordre UPDATE.

31 Cours PL/SQL daprès cours ORACLE - OAI / 31 C. Bonnet / R. Chapuis Fonction utilisateur : Restrictions Obligatoirement une fonction stockée. Doit être une fonction « ligne » et non une fonction « de groupe ». Nutilise que des paramètres de mode IN. Le type d un paramètre est limité à CHAR, DATE, ou NUMBER. Le type de la valeur résultat peut être tout type supporté par le SGBDR. Obligatoirement une fonction stockée. Doit être une fonction « ligne » et non une fonction « de groupe ». Nutilise que des paramètres de mode IN. Le type d un paramètre est limité à CHAR, DATE, ou NUMBER. Le type de la valeur résultat peut être tout type supporté par le SGBDR.

32 Cours PL/SQL daprès cours ORACLE - OAI / 32 C. Bonnet / R. Chapuis Fonction utilisateur : Restrictions Les ordres INSERT, UPDATE, ou DELETE ne sont pas autorisés dans le corps de la fonction. Les procédures / fonctions appelées dans le corps de la fonction doivent respecter les restrictions précédentes. Les ordres INSERT, UPDATE, ou DELETE ne sont pas autorisés dans le corps de la fonction. Les procédures / fonctions appelées dans le corps de la fonction doivent respecter les restrictions précédentes.

33 Cours PL/SQL daprès cours ORACLE - OAI / 33 C. Bonnet / R. Chapuis Suppression dune Fonction En utilisant SQL*Plus Par lordre DROP FUNCTION Syntaxe Exemple En utilisant SQL*Plus Par lordre DROP FUNCTION Syntaxe Exemple SQL> DROP FUNCTION get_salary; Function dropped. SQL> DROP FUNCTION get_salary; Function dropped. DROP FUNCTION nom_fonction;

34 Cours PL/SQL daprès cours ORACLE - OAI / 34 C. Bonnet / R. Chapuis Procédure ou Fonction? Procédure(DECLARE)BEGINEXCEPTIONEND; IN paramètre OUT paramètre IN OUT paramètre Environnement d appel Fonction(DECLARE)BEGINEXCEPTIONEND; IN paramètre

35 Cours PL/SQL daprès cours ORACLE - OAI / 35 C. Bonnet / R. Chapuis Procédure ou Fonction? Procédure Exécutée comme une instruction PL/SQL Pas de type de retour Peut renvoyer plusieurs valeurs résultats Fonction Utilisée dans une expression Type de RETOUR défini Une seule valeur résultat

36 C. Bonnet / R. Chapuis Cours PL/SQL daprès cours ORACLE - OAI Packages

37 Cours PL/SQL daprès cours ORACLE - OAI / 37 C. Bonnet / R. Chapuis Généralités Regroupement logique de types PL/SQL, variables, procédures et fonctions. Deux parties: – Spécification – Corps Ne peut pas être appelé. Permet à Oracle 8 de charger plusieurs objets simultanément en mémoire. Regroupement logique de types PL/SQL, variables, procédures et fonctions. Deux parties: – Spécification – Corps Ne peut pas être appelé. Permet à Oracle 8 de charger plusieurs objets simultanément en mémoire.

38 Cours PL/SQL daprès cours ORACLE - OAI / 38 C. Bonnet / R. Chapuis Avantages des Packages Modularité Meilleur développement des applications Informations cachées Ajout de fonctionnalités Meilleurs performances Surcharge Modularité Meilleur développement des applications Informations cachées Ajout de fonctionnalités Meilleurs performances Surcharge

39 Cours PL/SQL daprès cours ORACLE - OAI / 39 C. Bonnet / R. Chapuis Structure dun Package Procédure A déclaration Procédure B définition Spécification Corps du Package Procédure A définition Fonction C déclaration Fonction C définition

40 Cours PL/SQL daprès cours ORACLE - OAI / 40 C. Bonnet / R. Chapuis Développement dun package Fichier source Code Source p-code Edit Stocké dans la base Compilation Exécution 1 2 Editeur OracleProcedureBuilder

41 Cours PL/SQL daprès cours ORACLE - OAI / 41 C. Bonnet / R. Chapuis Développement dun Package Cataloguer dans deux fichiers différents les parties spécification et corps facilite les modifications ultérieures. La partie spécification peut exister sans la partie corps. La partie corps ne peut pas exister sans la partie spécification.. Cataloguer dans deux fichiers différents les parties spécification et corps facilite les modifications ultérieures. La partie spécification peut exister sans la partie corps. La partie corps ne peut pas exister sans la partie spécification..

42 Cours PL/SQL daprès cours ORACLE - OAI / 42 C. Bonnet / R. Chapuis CREATE [OR REPLACE] PACKAGE nom_package IS | AS type public et déclarations de variables spécifications de procédures et/ou fonctions END nom_package; CREATE [OR REPLACE] PACKAGE nom_package IS | AS type public et déclarations de variables spécifications de procédures et/ou fonctions END nom_package; Création de la Spécification du Package SyntaxeSyntaxe

43 Cours PL/SQL daprès cours ORACLE - OAI / 43 C. Bonnet / R. Chapuis package COMM_PACKAGE G_COMM RESET_COMM déclaration de procédure spécification Déclaration Éléments PUBLICS Variable Globale Procédure Publique

44 Cours PL/SQL daprès cours ORACLE - OAI / 44 C. Bonnet / R. Chapuis Déclaration Éléments Publiques Exemple SQL>CREATE OR REPLACE PACKAGE comm_package IS 2 g_comm NUMBER := 10; --initialisé à 10 3 PROCEDURE reset_comm 4 (v_comm INNUMBER); 5 END comm_package; 6 /

45 Cours PL/SQL daprès cours ORACLE - OAI / 45 C. Bonnet / R. Chapuis Utilisation Variable Globale ou Procédure Publique SQL>EXECUTE comm_package.g_comm := 5 SQL>EXECUTE comm_package.reset_comm(8)

46 Cours PL/SQL daprès cours ORACLE - OAI / 46 C. Bonnet / R. Chapuis Création dun Corps de Package SyntaxeSyntaxe CREATE [OR REPLACE] PACKAGE BODY nom_package IS | AS type privé et déclarations de variables corps de procédures et/ou fonctions END nom_package; CREATE [OR REPLACE] PACKAGE BODY nom_package IS | AS type privé et déclarations de variables corps de procédures et/ou fonctions END nom_package;

47 Cours PL/SQL daprès cours ORACLE - OAI / 47 C. Bonnet / R. Chapuis G_COMM RESET_COMM procédure declaration VALIDATE_COMM définition fonction Spécification Corps de Package RESET_COMM définition procédure COMM_PACKAGE package Éléments publics et privés Privée Public Globale

48 Cours PL/SQL daprès cours ORACLE - OAI / 48 C. Bonnet / R. Chapuis Création Corps Package Exemple SQL>CREATE OR REPLACE PACKAGE BODY comm_package IS 2 FUNCTION validate_comm 3 (v_comm IN NUMBER) RETURN BOOLEAN 4 IS 5 v_max_comm NUMBER; 6 BEGIN 7 SELECT MAX(comm) 8 INTO v_max_comm 9 FROM emp; 10 IF v_comm > v_max_comm THEN RETURN(FALSE); 11 ELSE RETURN(TRUE); 12 END IF; 13 END validate_comm; … END comm_package; /

49 Cours PL/SQL daprès cours ORACLE - OAI / 49 C. Bonnet / R. Chapuis 14 PROCEDURE reset_comm 15 (v_comm IN NUMBER) 16 IS 17 v_validBOOLEAN; 18 BEGIN 19 v_valid := validate_comm(v_comm); 20 IF v_valid = TRUE THEN 21 g_comm := v_comm; 22 ELSE 23 RAISE_APPLICATION_ERROR 24(-20210,'Invalid commission'); 25 END IF; 26 END reset_comm; 27 END comm_package; 28 / Création Corps Package Exemple - suite

50 Cours PL/SQL daprès cours ORACLE - OAI / 50 C. Bonnet / R. Chapuis Appel composant dun package Exemple 1: appel dune fonction à partir dune procédure du même package. CREATE OR REPLACE PACKAGE BODY comm_package IS... PROCEDURE reset_comm(v_comm IN NUMBER) IS v_validBOOLEAN; BEGIN v_valid := validate_comm(v_comm); -- nom fonction IF v_valid = TRUE THEN g_comm := v_comm; ELSE RAISE_APPLICATION_ERROR (-20210, 'Invalid comm'); END IF; END reset_comm; END comm_package;

51 Cours PL/SQL daprès cours ORACLE - OAI / 51 C. Bonnet / R. Chapuis Exemple 2: Appel à une procédure dun package avec SQL*Plus : Nom_package.nom_procédure Exemple 3: Appel à une procédure dun package d un schéma différent : Nom_schéma.nom_package.nom_procédure. Exemple 2: Appel à une procédure dun package avec SQL*Plus : Nom_package.nom_procédure Exemple 3: Appel à une procédure dun package d un schéma différent : Nom_schéma.nom_package.nom_procédure. Appel composant dun package SQL>EXECUTE comm_package.reset_comm(1500); SQL>EXECUTE scott.comm_package.reset_comm(1500);

52 Cours PL/SQL daprès cours ORACLE - OAI / 52 C. Bonnet / R. Chapuis Appel composant dun package SQL>EXECUTE (1500); Exemple 4: Appel à une procédure dun package dune base distante

53 Cours PL/SQL daprès cours ORACLE - OAI / 53 C. Bonnet / R. Chapuis Référence à une variable globale à lintérieur dun package ExempleExemple CREATE OR REPLACE PACKAGE BODY comm_package IS... PROCEDURE reset_comm(v_comm IN NUMBER) IS v_validBOOLEAN; BEGIN v_valid := validate_comm(v_comm); IF v_valid = TRUE THEN g_comm := v_comm; -- nom variable ELSE RAISE_APPLICATION_ERROR (-20210,'Invalid comm'); END IF; END reset_comm; END comm_package;

54 Cours PL/SQL daprès cours ORACLE - OAI / 54 C. Bonnet / R. Chapuis Référence à une variable globale par une procédure externe ExempleExemple CREATE OR REPLACE PROCEDURE hire_emp (v_ename INemp.ename%TYPE, v_mgr INemp.mgr%TYPE, v_job INemp.job%TYPE, v_sal INemp.sal%TYPE) IS v_comm emp.comm%TYPE;... BEGIN... v_comm := comm_package.g_comm; -- nom_package.nom_variable... END hire_emp;

55 Cours PL/SQL daprès cours ORACLE - OAI / 55 C. Bonnet / R. Chapuis DROP PACKAGE package_name Suppression dun Package Suppression de la spécification et du corps : Suppression du corps seul : DROP PACKAGE BODY package_name


Télécharger ppt "C. Bonnet / R. Chapuis Cours PL/SQL daprès cours ORACLE - OAI Procédures Stockées."

Présentations similaires


Annonces Google