6 Copyright © Oracle Corporation, 2001. Tous droits réservés. Autres concepts relatifs aux packages.

Slides:



Advertisements
Présentations similaires
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Advertisements

Les Systèmes de Gestion de Bases de Données (SGBD) PL-SQL.
Programmation dapplication INT. 2 Bases de Données Plan du document Contexteslide 1 Programmer avec une BDslide 2 Client-Serveur SQL et architecture 3.
Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
Oracle: OO.
AYARI Mejdi Formation 2121 * ISD * 1 tructured uery Anguage 2006.
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
T ECHNOLOGIES O RACLE Manipulation des données © sebvita.com.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Gestion des erreurs Packages ©Alain Villeneuve, 1999
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
PLSQL ORACLE 8i Connecter VB à BD Oracle Les collections Question de révision Les blocs anonymes Les triggers REVISION Par : Joël Huot.
Bases de Données Avancées - TP2: SQL
PL/SQL Noreddine GHERABI 1.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Les transactions.
Procédures Stockées Schedule: Timing Topic 60 minutes Lecture
Bases de données orientées objets SGBD relationnels-objets
Bases de données orientées objets Illustration sur ORACLE
Limiter et trier des données
Introduction.
8 Copyright © Oracle Corporation, Tous droits réservés. Manipuler des objets de grande taille.
Gérer la sécurité des mots de passe et les ressources
Packages et Types De la Spécification Formelle A l'implémentation Ada.
Le Langage de BLOC PL/SQL
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Créer des déclencheurs de base de données
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Gérer les privilèges.
Créer des packages.
Module 12 : Implémentation de procédures stockées.
Surveiller et résoudre le conflit de verrouillage
Copyright  Oracle Corporation, All rights reserved. 19 Gestion des Privilèges.
Packages fournis par Oracle
(Ou groupes d ’utilisateurs)
(Procedural Language / Structured Query Language)
Ait Ahmed Madjid Cohen Lior Jaballah Seddik Leborgne Fabien
Manipulation des Données
Plan du cours - Bases de données objet : objectifs, principe, mise en oeuvre sous Oracle - Aspect système des bases de données : fichiers, index et hachage.
Module 13 : Implémentation de déclencheurs. Vue d'ensemble Présentation des déclencheurs Définition de déclencheurs Exemples de déclencheurs Performances.
Structure de stockage et relations
Gérer les rôles.
1 Copyright © Oracle Corporation, Tous droits réservés. Présentation des sous-programmes PL/SQL.
Gérer les utilisateurs
Introduction  Langage propre à Oracle basé sur ADA  Offre une extension procédurale à SQL  PL/SQL permet d’utiliser un sous-ensemble du langage SQL.
Révision du langage PL/SQL
Création et Gestion de Tables
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Objectifs A la fin de ce chapitre, vous pourrez :
4 Copyright © Oracle Corporation, Tous droits réservés. Gérer les sous-programmes.
13 Copyright © Oracle Corporation, Tous droits réservés. Gérer l'intégrité des données.
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
 L’information est conservée sous forme de tables  Contient: ◦ Un nom ◦ Une clé primaire ◦ Une liste de colonnes ◦ Les informations/données (sous forme.
PL/SQL Présentation.
Bases de Données Avancées - TP2: SQL
Note: Les nombres écrits en gras renvoie à des leçons entières. Symbole %FOUND 6-13 %ISOPEN 6-13 %NOTFOUND 6-13 %ROWCOUNT 6-13 %ROWTYPE 5, 6-17 %TYPE 1-20.
Procédures Stockées Fonctions Paquetages
CHAPITRE 4 PL/SQL Langage SQL en mode procédural (PL/SQL):
Types de données composites
Le langage SQL.
Cours n°2 Implémentation et exploitation
Introduction au langage PL/SQL
Les exceptions Une exception est un identificateur PL/SQL détecté pendant la phase d’exécution. Comment est-elle déclenchée ? À la suite d’une erreur.
SQL Partie 2. SQL est un langage de manipulation de données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Oracle.
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
D Copyright © 2004, Oracle. Tous droits réservés. Utiliser SQL*Plus.
Transcription de la présentation:

6 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux packages

6-2 Copyright © Oracle Corporation, Tous droits réservés. Objectifs A la fin de ce chapitre, vous pourrez : écrire des packages utilisant la fonction de surcharge décrire les erreurs liées aux sous-programmes à référence mutuelle initialiser des variables avec une procédure à exécution unique identifier des états persistants

6-3 Copyright © Oracle Corporation, Tous droits réservés. Surcharge Permet d'utiliser un même nom pour différents sous-programmes d'un bloc PL/SQL, d'un sous- programme ou d'un package Exige que les paramètres formels des sous- programmes soient différents en termes de nombre, d'ordre ou de famille de type de données Permet d'offrir une souplesse accrue dans la mesure où un utilisateur ou une application n'est pas limité(e) par un type de données particulier, ni par le nombre de paramètres formels Remarque : La surcharge ne peut être appliquée qu'aux sous-programmes locaux ou présentés sous forme de packages. Elle ne peut pas être appliquée aux sous-programmes autonomes.

6-4 Copyright © Oracle Corporation, Tous droits réservés.

6-5 Copyright © Oracle Corporation, Tous droits réservés. Exemple de surcharge CREATE OR REPLACE PACKAGE over_pack IS PROCEDURE add_dept (p_deptno IN departments.department_id%TYPE, p_name IN departments.department_name%TYPE DEFAULT 'unknown', p_loc IN departments.location_id%TYPE DEFAULT 0); PROCEDURE add_dept (p_name IN departments.department_name%TYPE DEFAULT 'unknown', p_loc IN departments.location_id%TYPE DEFAULT 0); END over_pack; / over_pack.sql

6-6 Copyright © Oracle Corporation, Tous droits réservés. Exemple de surcharge CREATE OR REPLACE PACKAGE BODY over_pack IS PROCEDURE add_dept (p_deptno IN departments.department_id%TYPE, p_name IN departments.department_name%TYPE DEFAULT 'unknown', p_loc IN departments.location_id%TYPE DEFAULT 0) IS BEGIN INSERT INTO departments (department_id, department_name, location_id) VALUES (p_deptno, p_name, p_loc); END add_dept; PROCEDURE add_dept (p_name IN departments.department_name%TYPE DEFAULT 'unknown', p_loc IN departments.location_id%TYPE DEFAULT 0) IS BEGIN INSERT INTO departments (department_id, department_name, location_id) VALUES (departments_seq.NEXTVAL, p_name, p_loc); END add_dept; END over_pack; / over_pack_body.sql

6-7 Copyright © Oracle Corporation, Tous droits réservés. Exemple de surcharge La plupart des fonctions intégrées font l'objet d'une surcharge Par exemple, reportez-vous à la fonction TO_CHAR du package STANDARD Si vous déclarez à nouveau un sous-programme intégré dans un programme PL/SQL, votre déclaration locale remplace la déclaration globale FUNCTION TO_CHAR (p1 DATE) RETURN VARCHAR2; FUNCTION TO_CHAR (p2 NUMBER) RETURN VARCHAR2; FUNCTION TO_CHAR (p1 DATE, P2 VARCHAR2) RETURN VARCHAR2; FUNCTION TO_CHAR (p1 NUMBER, P2 VARCHAR2) RETURN VARCHAR2;

6-8 Copyright © Oracle Corporation, Tous droits réservés. Utiliser les pré-déclarations Vous devez déclarer des identificateurs avant de les référencer. CREATE OR REPLACE PACKAGE BODY forward_pack IS PROCEDURE award_bonus(...) IS BEGIN calc_rating(...); --illegal reference END; PROCEDURE calc_rating(...) IS BEGIN... END; END forward_pack; /

6-9 Copyright © Oracle Corporation, Tous droits réservés. Utiliser les pré-déclarations CREATE OR REPLACE PACKAGE BODY forward_pack IS PROCEDURE calc_rating(...); -- forward declaration PROCEDURE award_bonus(...) IS-- subprograms defined BEGIN -- in alphabetical order calc_rating(...);... END; PROCEDURE calc_rating(...) IS BEGIN... END; END forward_pack; /

6-10 Copyright © Oracle Corporation, Tous droits réservés. Créer une procédure à exécution unique CREATE OR REPLACE PACKAGE taxes IS tax NUMBER; declare all public procedures/functions END taxes; / CREATE OR REPLACE PACKAGE BODY taxes IS declare all private variables define public/private procedures/functions BEGIN SELECT rate_value INTO tax FROM tax_rates WHERE rate_name = 'TAX'; END taxes; /

6-11 Copyright © Oracle Corporation, Tous droits réservés. Restrictions relatives aux fonctions de package utilisées en SQL Une fonction appelée depuis : une interrogation ou une instruction LMD (Langage de manipulation de données) ne peut pas terminer la transaction en cours, effectuer une création ou une annulation par rapport à un savepoint, ou modifier ( ALTER ) le système ou la session une instruction d'interrogation ou une instruction LMD en parallèle ne peut pas exécuter une instruction LMD ou modifier la base de données une fonction appelée depuis une instruction LMD ne peut pas lire ou modifier la table que l'instruction LMD est en train de modifier Remarque : Les appels de sous-programmes qui ne respectent pas les restrictions ci-dessus ne sont pas autorisés.

6-12 Copyright © Oracle Corporation, Tous droits réservés. CREATE OR REPLACE PACKAGE taxes_pack IS FUNCTION tax (p_value IN NUMBER) RETURN NUMBER; END taxes_pack; / Package défini par l'utilisateur : taxes_pack CREATE OR REPLACE PACKAGE BODY taxes_pack IS FUNCTION tax (p_value IN NUMBER) RETURN NUMBER IS v_rate NUMBER := 0.08; BEGIN RETURN (p_value * v_rate); END tax; END taxes_pack; /

6-13 Copyright © Oracle Corporation, Tous droits réservés. Appeler une fonction de package définie par l'utilisateur depuis une instruction SQL SELECT taxes_pack.tax(salary), salary, last_name FROM employees; …

6-14 Copyright © Oracle Corporation, Tous droits réservés. Exemple d'état persistant de variables de package CREATE OR REPLACE PACKAGE comm_package IS g_comm NUMBER := 10; --valeur initiale 10 PROCEDURE reset_comm (p_comm IN NUMBER); END comm_package; / CREATE OR REPLACE PACKAGE BODY comm_package IS FUNCTION validate_comm (p_comm IN NUMBER) RETURN BOOLEAN IS v_max_comm NUMBER; BEGIN valide la commission comme étant inférieure à la commission -- maximale dans la table END validate_comm; PROCEDURE reset_comm (p_comm IN NUMBER) IS BEGIN appelle validate_comm avec la valeur indiquée END reset_comm; END comm_package; /

6-15 Copyright © Oracle Corporation, Tous droits réservés. Etat persistant des variables de package Heure 9:00 EXECUTE comm_package.reset_comm (0.25) max_comm =0.4 > 0.25 g_comm = :30 INSERT INTO employees (last_name, commission_pct) VALUES ('Madonna', 0.8); max_comm =0.8 9:35 EXECUTE comm_package.reset_comm(0.5) max_comm =0.8 > 0.5 g_comm = 0.5 Scott Jones

6-16 Copyright © Oracle Corporation, Tous droits réservés. Etat persistant des variables de package Heure 9:00 EXECUTE comm_package.reset_comm (0.25) max_comm =0.4 > 0.25 g_comm = :30 INSERT INTO employees (last_name, commission_pct) VALUES ('Madonna', 0.8); max_comm =0.8 9:35 EXECUTE comm_package.reset_comm(0.5) max_comm =0.8 > 0.5 g_comm = :00 EXECUTE comm_package.reset_comm (0.6) max_comm =0.4 < 0.6 INVALIDE 11:00 ROLLBACK; 11:01 EXIT Scott Jones

6-17 Copyright © Oracle Corporation, Tous droits réservés. Etat persistant des variables de package Heure 9:00 EXECUTE comm_package.reset_comm (0.25) max_comm =0.4 > 0.25 g_comm = :30 INSERT INTO employees (last_name, commission_pct) VALUES ('Madonna', 0.8); max_comm =0.8 9:35 EXECUTE comm_package.reset_comm(0.5) max_comm =0.8 > 0.5 g_comm = :00 EXECUTE comm_package.reset_comm (0.6) max_comm =0.4 < 0.6 INVALIDE 11:00 ROLLBACK; 11:01 EXIT 11:45 Nouvelle connexion. g_comm = 10, max_comm =0.4 12:00 EXECUTE comm_package.reset_comm(0.25) Scott Jones VALIDE

6-18 Copyright © Oracle Corporation, Tous droits réservés. Contrôler l'état persistant d'un curseur de package CREATE OR REPLACE PACKAGE pack_cur IS CURSOR c1 IS SELECT employee_id FROM employees ORDER BY employee_id DESC; PROCEDURE proc1_3rows; PROCEDURE proc4_6rows; END pack_cur; / Exemple:

6-19 Copyright © Oracle Corporation, Tous droits réservés. CREATE OR REPLACE PACKAGE BODY pack_cur IS v_empno NUMBER; PROCEDURE proc1_3rows IS BEGIN OPEN c1; LOOP FETCH c1 INTO v_empno; DBMS_OUTPUT.PUT_LINE('Id :' ||(v_empno)); EXIT WHEN c1%ROWCOUNT >= 3; END LOOP; END proc1_3rows; PROCEDURE proc4_6rows IS BEGIN LOOP FETCH c1 INTO v_empno; DBMS_OUTPUT.PUT_LINE('Id :' ||(v_empno)); EXIT WHEN c1%ROWCOUNT >= 6; END LOOP; CLOSE c1; END proc4_6rows; END pack_cur; / Contrôler l'état persistant d'un curseur de package

6-20 Copyright © Oracle Corporation, Tous droits réservés. Exécuter PACK_CUR SET SERVEROUTPUT ON EXECUTE pack_cur.proc1_3rows EXECUTE pack_cur.proc4_6rows

6-21 Copyright © Oracle Corporation, Tous droits réservés. CREATE OR REPLACE PACKAGE BODY emp_package IS PROCEDURE read_emp_table (p_emp_table OUT emp_table_type) IS i BINARY_INTEGER := 0; BEGIN FOR emp_record IN (SELECT * FROM employees) LOOP p_emp_table(i) := emp_record; i:= i+1; END LOOP; END read_emp_table; END emp_package; / Tables et enregistrements PL/SQL dans les packages CREATE OR REPLACE PACKAGE emp_package IS TYPE emp_table_type IS TABLE OF employees%ROWTYPE INDEX BY BINARY_INTEGER; PROCEDURE read_emp_table (p_emp_table OUT emp_table_type); END emp_package; /

6-22 Copyright © Oracle Corporation, Tous droits réservés. Synthèse Ce chapitre vous a permis d'apprendre à : appliquer des surcharges aux sous-programmes utiliser les références amont utiliser les procédures à exécution unique décrire le niveau de pureté des fonctions de package identifier l'état persistant des objets de package

6-23 Copyright © Oracle Corporation, Tous droits réservés. Présentation de l'exercice 6 Dans cet exercice, vous allez : utiliser des sous-programmes surchargés créer une procédure à exécution unique Dans cet exercice, vous allez : utiliser des sous-programmes surchargés créer une procédure à exécution unique

6-24 Copyright © Oracle Corporation, Tous droits réservés.