SlideShare a Scribd company logo
1 of 39
(	
  

LABORATOIRE D’INFORMATIQUE DE
L’UNIVERSITE DE PAU ET DES PAYS
DE L’ADOUR

BDD Avancées

Fonctions et Procédures

Richard Chbeir, Ph.D.
Plan	
  
Introduction	
  
Procédure
Fonction

10/12/13
Page 2

Package
Introduction
•  Ces objets sont stockés une seule fois
dans la base
•  Ils sont partageables et gérées par
plusieurs applications de façon
centralisée
•  Ils sont soumis à tous les mécanismes
de sécurité et de confidentialité

10/12/13
Page 3
Introduction
•  Pour créer un objet procédural, il faut
posséder les privilèges
–  CREATE PROCEDURE (création locale)
–  CREATE ANY PROCEDURE (création dans
d'autres schémas)

10/12/13
Page 4
Introduction
•  Pour exécuter un objet procédural, il faut
posséder les privilèges
–  EXECUTE PROCEDURE (exécution locale)
–  EXECUTE ANY PROCEDURE (exécution
dans d'autres schémas)

•  Pour donner à un autre utilisateur le droit
d'exécution
–  GRANT EXECUTE ON ma_procédure TO autre_utilisateur

10/12/13
Page 5
Procédure
•  Est un bloc PL/SQL nommé pouvant contenir
– 
– 
– 
– 
– 

• 
• 
• 
• 

Des commandes SQL (LMD)
Des instructions PL/SQL
Des variables et des constantes
Des curseurs
Un gestionnaire d'erreurs

Peut être paramétrée et exécutée
Utilisée pour réaliser une (ou plusieurs) action(s)
Peut être récursif et surchargé
Est compilé avant le stockage
–  Ne nécessite plus d'analyse ni de compilation à l'exécution
–  Sa mise en mémoire permettra d'améliorer les performances

10/12/13
Page 6
Procédure
•  Concernant la sécurité
–  On peut autoriser l'accès à certaines tables
uniquement à travers des procédures sans
avoir des droits d'accès aux tables en
dehors des procédures

10/12/13
Page 7
Procédure
•  Concernant l'intégrité
–  Les procédures assurent la même
fonctionnalité indépendamment de la partie
appelante
–  La recompilation d'une procédure en cas de
modification n'exige pas la recompilation de
l'ensemble du code de l'application

10/12/13
Page 8
Procédure
•  Concernant les performances
–  Réduction du trafic sur le réseau par la soumission
d'un bloc PL/SQL au lieu de plusieurs commandes
SQL
–  Compilation des procédures cataloguées (le moteur
ne recompile pas les procédures au moment de
l'exécution
–  Exécution immédiate de la procédure si elle est
dans la SGA (pas d'accès disque)
–  Partage de l'exécution d'une procédure par
plusieurs utilisateurs (notion de mémoire partagée)

10/12/13
Page 9
Procédure
•  Structure générale

PROCEDURE nom_procédure [(paramètres, …)] {IS | AS}
Déclaration des variables locales
BEGIN
Instructions SQL et PL/SQL
EXCEPTION
Traitement des exceptions
END [nom_procédure];

10/12/13
Page 10
Procédure
•  Création
CREATE [OR REPLACE] PROCEDURE [schéma.]nom_procédure
[(paramètres, …)] {IS | AS}
Déclaration des variables locales
BEGIN
Instructions SQL et PL/SQL
EXCEPTION
Traitement des exceptions
END [nom_procédure];
Nomparametre [ IN | OUT | IN OUT] type [{:=default}]

10/12/13
Page 11

IN: variable passée en entrée (Par défaut)
OUT : variable renseignée par la procédure puis envoyée à l'appelant
IN OUT : passage par référence
Le type ne doit pas contenir d'indication sur sa taille
Procédure
•  Exemple : Augmentation de salaire

10/12/13
Page 12

CREATE OR REPLACE PROCEDURE Augmentation_salaire
(NumSal integer, Montant Real) IS
SalaireActuel Real;
SalaireNull Exception;
BEGIN
SELECT sal into SalaireActuel FROM emp where empno = NumSal;
IF (SalaireActuel IS NULL) THEN
RAISE SalaireNull;
ELSE UPDATE emp set sal = sal + Montant Where empno = NumSal;
END IF;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line(NumSal || 'Est inconnu');
WHEN SalaireNull THEN
dbms_output.put_line(NumSal || 'a un Salaire Null');
END Augmentation_Salaire;
/
Procédure
•  Exécution de la procédure
AugmentationSalaire

BEGIN
A partir d'une autre procédure …
AugmentationSalaire (100, 1000);
…

A partir de SQL*Plus

10/12/13
Page 13

SQL> EXECUTE AugmentationSalaire (100, 1000);
Procédure
•  Mais PL/SQL exige la déclaration d'une
procédure avant de l'utiliser
DECLARE
PROCEDURE AccorderAugmentation (. . .) IS
BEGIN
AugmentationSalaire (. . .); -- non déclarée
END;
PROCEDURE AugmentationSalaire (. . .) IS
BEGIN
...
END;
...

10/12/13
Page 14
Procédure
•  Mais PL/SQL exige la déclaration d'une
procédure avant de l'utiliser
Solution 1
DECLARE
PROCEDURE AugmentationSalaire (. . .) IS
BEGIN
...
END;
PROCEDURE AccorderAugmentation (. . .) IS
BEGIN
AugmentationSalaire (. . .); -- déjà déclarée
END;
...
10/12/13
Page 15
Procédure
•  Mais PL/SQL exige la déclaration d'une
procédure avant de l'utiliser
Solution 2
DECLARE
PROCEDURE AugmentationSalaire (…); --forward declaration
PROCEDURE AccorderAugmentation (. . .) IS
BEGIN
AugmentationSalaire (. . .); -- déjà déclarée
END;
PROCEDURE AugmentationSalaire (. . .) IS
BEGIN
...
END;
...
10/12/13
Page 16
Procédure
•  Surcharge ou overloading
–  Possible dans un bloc ou un package
–  Pas possible si seulement les noms des
paramètres ou leur mode de passage sont
différents
DECLARE
….
PROCEDURE Augmentation_salaire (NumSal integer, Montant Real) IS
…
END Augmentation_Salaire;
PROCEDURE Augmentation_salaire (Montant Real) IS
…
END Augmentation_Salaire;
/
10/12/13
Page 17
Procédure
•  Modification d'une procédure
–  Après n'importe quelle modification dans
une procédure, on est obligé de recompiler
avec
SQL> ALTER PROCEDURE [Schéma.]nom_procédure COMPILE;

•  Exemple
SQL> ALTER PROCEDURE AugmentationSalaire COMPILE;

10/12/13
Page 18
Procédure
•  Suppression d'une procédure

SQL> DROP PROCEDURE [Schéma.]nom_procédure;

10/12/13
Page 19
Procédure
•  Exemple
CREATE PROCEDURE suppression_Salarié (num_emp number) AS
BEGIN
DELETE FROM emp WHER empno = num_emp;
END
/

Quelles sont les erreurs identifiées ?
SQL> SHOW ERRORS
ERRO….

10/12/13
Page 20
Procédure
•  Exemple
CREATE PROCEDURE suppression_Salarié (num_emp number) AS
BEGIN
DELETE FROM emp WHER empno = num_emp;
END
/

Quelles sont les erreurs identifiées ?

–  On peut également interroger
•  USER_ERRORS, ALL_ERRORS,
DBA_ERRORS

10/12/13
Page 21
Procédure
•  Les sources de vos procédures sont
stockées dans
–  USER_SOURCE
–  ALL_SOURCE
–  DBA_SOURCE

10/12/13
Page 22
Procédure externe
•  A partir de la version 8i, on peut intégrer
des procédures écrites dans d'autres
langages (Java, C, Pascal, etc.)

10/12/13
Page 23
Fonction
•  Est une procédure qui renvoie une valeur
•  Possède dans sa structure la clause
supplémentaire RETURN
•  Peut être utilisée dans les requêtes SQL
FUNCTION nom_fonction [(paramètres, …)] RETURN type {IS | AS}
Déclaration des variables locales
BEGIN
Instructions SQL et PL/SQL
RETURN (valeur);
EXCEPTION
Traitement des exceptions
END [nom_fonction];

10/12/13
Page 24

Nomparamètre [IN] type [, nomparamètre2 [IN] type …
Où type ne doit pas contenir d'indication sur la taille
Fonction
•  Création d'une fonction stockée
CREATE [OR REPLACE] FUNCTION [schéma.]nom_fonction
[(paramètres, …)] RETURN type {IS | AS}
Déclaration des variables locales
BEGIN
Instructions SQL et PL/SQL
RETURN (Valeur);
EXCEPTION
Traitement des exceptions
END [nom_fonction];

10/12/13
Page 25
Fonction
•  Exemple d'une fonction
VérificationSalaire
CREATE or replace FUNCTION VérificationSalaire (NumGrade integer, Montant Real)
RETURN boolean AS
MinSalaire Real;
MaxSalaire Real;
BEGIN
SELECT losal, hisal INTO MinSalaire, MaxSalaire
FROM salgrade WHERE grade = NumGrade;
RETURN ((Montant >= MinSalaire) AND (Montant <= MaxSalaire));
END VérificationSalaire;
/

10/12/13
Page 26
Fonction
•  Exécution de la fonction
VérificationSalaire

A partir d'une autre procédure

A partir de SQL*Plus

10/12/13
Page 27

BEGIN
…
IF VérificationSalaire (100, 1000) THEN
…
SQL> select VérificationSalaire (100, 1000) FROM Dual;
Fonction
•  Suppression d'une fonction

SQL> DROP FUNCTION [Schéma.]nom_fonction;

10/12/13
Page 28
Fonction
•  Surcharge ou overloading
–  Pas possible si seul le type retourné est
différent

10/12/13
Page 29
Package
•  Permet d'encapsuler dans une unité de la
BDD plusieurs
–  Procédures, fonctions, curseurs et variables

•  Ne peut pas être appelé, paramétré, ou
imbriqué
•  Apporte plusieurs avantages
–  Meilleure gestion de privilèges
–  Meilleur moyen de structuration et de d'organisation
–  Meilleures performances
•  Le moteur charge au noyau le package entier

10/12/13
Page 30
Package
•  Se compose de deux parties

Spécification
Application
Corps

10/12/13
Page 31

BDD Oracle
Package
•  Création d'un Package
–  Création des spécifications
•  Consiste à déclarer les procédures, fonctions, constates,
variables, et les exceptions accessibles par le public
autorisé

–  Création du corps
•  Consiste à définir les procédures, fonctions, constates,
variables, et les exceptions déclarées dans la section
spécifications du package
•  Peut contenir également d'autres objets (privés) non
déclarés dans la spécification qui seront inaccessibles en
dehors du corps du package
•  Toute l'implémentation est cachée aux applications
10/12/13
Page 32
Package
•  Création d'un Package
–  Création de la section spécification

CREATE [OR REPLACE] PACKAGE [Schéma.]nom_package {IS |AS}
Déclatation des variables globales
Interface des sous-programmes
END [nom_package];

10/12/13
Page 33
Package
•  Création d'un Package
–  Création du corps

CREATE [OR REPLACE] PACKAGE BODY [Schéma.]nom_package {IS |AS}
Déclaration des variables locales
corps des sous-programmes publics et privés
BEGIN
….
END [nom_package];

10/12/13
Page 34
Package
•  Exemple
CREATE OR REPLACE PACKAGE Gestion_Salarié IS
FUNCTION Embaucher (nom VARCHAR2, fonction VARCHAR2, Chef NUMBER,
eentrée DATE, salaire NUMBER, commission NUMBER, NuméroDept NUMBER)
RETURN NUMBER;
PROCEDURE Suppression_Salarié (NuméroSalarié NUMBER);
PROCEDURE Augmentation_Salaire (NumSal NUMBER, Montant REAL);
END Gestion_Salarié ;

10/12/13
Page 35
Package
•  Exemple
CREATE OR REPLACE PACKAGE BODY Gestion_Salarié IS
FUNCTION Embaucher (nom VARCHAR2, fonction VARCHAR2, Chef NUMBER, dateentrée DATE, salaire NUMBER,
commission NUMBER, NuméroDept NUMBER) RETURN NUMBER
IS
Nouveau NUMBER(8);
BEGIN
SELECT MAX(empno)+1 INTO Nouveau FROM emp;
INSERT INTO emp VALUES (Nouveau, nom, fonction, chef, dateentrée, salaire, commission, NuméroDept);
RETURN (Nouveau);
END Embaucher;
PROCEDURE Suppression_Salarié (NuméroSalarié NUMBER);
…
END Suppression_Salarié;
PROCEDURE Augmentation_Salaire (NumSal NUMBER, Montant REAL);
…
END Augmentation_Salaire;
END Gestion_Salarié ;

10/12/13
Page 36
Package
•  Appel d'une procédure ou fonction packagée

A partir de SQL*Plus

SQL> EXECUTE Nompackage.nom_procédure [(paramètre)];

A partir d'une autre procédure

10/12/13
Page 37

BEGIN
…
Nompackage.nomprocédure [(paramètres)];
…
Package
•  Suppression d'un package

SQL> DROP PACKAGE [Schéma.]nom_package;

10/12/13
Page 38
Merci !

10/12/13
Page 39

More Related Content

What's hot

Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Plsql
PlsqlPlsql
PlsqlAz Za
 
Fonctions Mono-Ligne
Fonctions Mono-LigneFonctions Mono-Ligne
Fonctions Mono-Lignewebreaker
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1Régis Lutter
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLDamien Seguy
 
Manipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracleManipulation des Données , cours sql oracle
Manipulation des Données , cours sql oraclewebreaker
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratiqueAbdelouahed Abdou
 
Création et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL OracleCréation et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL Oraclewebreaker
 
Sqlalchemy declaratif
Sqlalchemy declaratifSqlalchemy declaratif
Sqlalchemy declaratifAffinitic
 
Java - JDBC - 2 - Intructions SQL
Java - JDBC - 2 - Intructions SQLJava - JDBC - 2 - Intructions SQL
Java - JDBC - 2 - Intructions SQLNoël
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oraclewebreaker
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlpluswebreaker
 
Formation PHP
Formation PHPFormation PHP
Formation PHPkemenaran
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECTSQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECTwebreaker
 
Principes Relationnels et Concepts Oracle
Principes Relationnelset Concepts OraclePrincipes Relationnelset Concepts Oracle
Principes Relationnels et Concepts Oraclewebreaker
 

What's hot (19)

Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Plsql
PlsqlPlsql
Plsql
 
Fonctions Mono-Ligne
Fonctions Mono-LigneFonctions Mono-Ligne
Fonctions Mono-Ligne
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
Manipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracleManipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracle
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratique
 
cours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhouminecours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhoumine
 
Création et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL OracleCréation et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL Oracle
 
Sqlalchemy declaratif
Sqlalchemy declaratifSqlalchemy declaratif
Sqlalchemy declaratif
 
Java - JDBC - 2 - Intructions SQL
Java - JDBC - 2 - Intructions SQLJava - JDBC - 2 - Intructions SQL
Java - JDBC - 2 - Intructions SQL
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oracle
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplus
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
 
Php1
Php1Php1
Php1
 
Php & My Sql
Php & My SqlPhp & My Sql
Php & My Sql
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECTSQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
 
Principes Relationnels et Concepts Oracle
Principes Relationnelset Concepts OraclePrincipes Relationnelset Concepts Oracle
Principes Relationnels et Concepts Oracle
 

Viewers also liked

Fondation Fernet-Branca Claire Morgan
Fondation Fernet-Branca Claire MorganFondation Fernet-Branca Claire Morgan
Fondation Fernet-Branca Claire MorganBâle Région Mag
 
Alliance Française de Bâle Programme avril à juin 2015
Alliance Française de Bâle Programme avril à  juin 2015Alliance Française de Bâle Programme avril à  juin 2015
Alliance Française de Bâle Programme avril à juin 2015Bâle Région Mag
 
Herramientas de Infoactivismo
Herramientas de InfoactivismoHerramientas de Infoactivismo
Herramientas de InfoactivismoEspacio Público
 
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerceFACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerceChristophe Favresse
 
Presentación: Héctor Faúndez Ledezma, Derechos Humanos
Presentación: Héctor Faúndez Ledezma, Derechos HumanosPresentación: Héctor Faúndez Ledezma, Derechos Humanos
Presentación: Héctor Faúndez Ledezma, Derechos HumanosEspacio Público
 
Presentación II MKT Intelligence - Lynn Mora - Neo Humano
Presentación II MKT Intelligence - Lynn Mora - Neo HumanoPresentación II MKT Intelligence - Lynn Mora - Neo Humano
Presentación II MKT Intelligence - Lynn Mora - Neo HumanoNeo Consulting
 
Programa de feria Huamantla 2011
Programa de feria Huamantla 2011Programa de feria Huamantla 2011
Programa de feria Huamantla 2011renelc
 
Diagramando con Grilla para monitores y celulares
Diagramando con Grilla para monitores y celularesDiagramando con Grilla para monitores y celulares
Diagramando con Grilla para monitores y celularesLuis Palomino
 
Boletín ordinario nro 12
Boletín ordinario nro 12Boletín ordinario nro 12
Boletín ordinario nro 12Yasmin Cortes
 
201001 TDD
201001 TDD201001 TDD
201001 TDDlyonjug
 
Hosteltur 195 back_to_basics_en_el_mercado_emisor_junio_2010
Hosteltur 195 back_to_basics_en_el_mercado_emisor_junio_2010Hosteltur 195 back_to_basics_en_el_mercado_emisor_junio_2010
Hosteltur 195 back_to_basics_en_el_mercado_emisor_junio_2010Hosteltur
 
Etudes les Français et le tactile (Ipsos pour Hopscotch et Microsoft)
Etudes les Français et le tactile (Ipsos pour Hopscotch et Microsoft)Etudes les Français et le tactile (Ipsos pour Hopscotch et Microsoft)
Etudes les Français et le tactile (Ipsos pour Hopscotch et Microsoft)Agence Hopscotch
 
Théâtre La Coupole Janvier 2014
Théâtre La Coupole Janvier 2014Théâtre La Coupole Janvier 2014
Théâtre La Coupole Janvier 2014Bâle Région Mag
 

Viewers also liked (20)

Noel à Naples
Noel à Naples Noel à Naples
Noel à Naples
 
Lunes
LunesLunes
Lunes
 
Fondation Fernet-Branca Claire Morgan
Fondation Fernet-Branca Claire MorganFondation Fernet-Branca Claire Morgan
Fondation Fernet-Branca Claire Morgan
 
Alliance Française de Bâle Programme avril à juin 2015
Alliance Française de Bâle Programme avril à  juin 2015Alliance Française de Bâle Programme avril à  juin 2015
Alliance Française de Bâle Programme avril à juin 2015
 
Herramientas de Infoactivismo
Herramientas de InfoactivismoHerramientas de Infoactivismo
Herramientas de Infoactivismo
 
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerceFACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
FACT-Finder, solution de monétisation du parcours d'achat pour l'e-commerce
 
110331 rapport-cpcs
110331 rapport-cpcs110331 rapport-cpcs
110331 rapport-cpcs
 
Presentación: Héctor Faúndez Ledezma, Derechos Humanos
Presentación: Héctor Faúndez Ledezma, Derechos HumanosPresentación: Héctor Faúndez Ledezma, Derechos Humanos
Presentación: Héctor Faúndez Ledezma, Derechos Humanos
 
Presentación II MKT Intelligence - Lynn Mora - Neo Humano
Presentación II MKT Intelligence - Lynn Mora - Neo HumanoPresentación II MKT Intelligence - Lynn Mora - Neo Humano
Presentación II MKT Intelligence - Lynn Mora - Neo Humano
 
Logement abordable: Un droit pour tous
Logement abordable: Un droit pour tousLogement abordable: Un droit pour tous
Logement abordable: Un droit pour tous
 
Programa de feria Huamantla 2011
Programa de feria Huamantla 2011Programa de feria Huamantla 2011
Programa de feria Huamantla 2011
 
Mo wes
Mo wesMo wes
Mo wes
 
Organizacion
OrganizacionOrganizacion
Organizacion
 
Diagramando con Grilla para monitores y celulares
Diagramando con Grilla para monitores y celularesDiagramando con Grilla para monitores y celulares
Diagramando con Grilla para monitores y celulares
 
Boletín ordinario nro 12
Boletín ordinario nro 12Boletín ordinario nro 12
Boletín ordinario nro 12
 
201001 TDD
201001 TDD201001 TDD
201001 TDD
 
Hosteltur 195 back_to_basics_en_el_mercado_emisor_junio_2010
Hosteltur 195 back_to_basics_en_el_mercado_emisor_junio_2010Hosteltur 195 back_to_basics_en_el_mercado_emisor_junio_2010
Hosteltur 195 back_to_basics_en_el_mercado_emisor_junio_2010
 
Etudes les Français et le tactile (Ipsos pour Hopscotch et Microsoft)
Etudes les Français et le tactile (Ipsos pour Hopscotch et Microsoft)Etudes les Français et le tactile (Ipsos pour Hopscotch et Microsoft)
Etudes les Français et le tactile (Ipsos pour Hopscotch et Microsoft)
 
Théâtre La Coupole Janvier 2014
Théâtre La Coupole Janvier 2014Théâtre La Coupole Janvier 2014
Théâtre La Coupole Janvier 2014
 
Jesus101 dec11
Jesus101 dec11Jesus101 dec11
Jesus101 dec11
 

Similar to Plsql2

nstance.pptx
nstance.pptxnstance.pptx
nstance.pptxBahaty1
 
Db2 ia formation-db2-universal-database-les-bases-et-perfectionnement
Db2 ia formation-db2-universal-database-les-bases-et-perfectionnementDb2 ia formation-db2-universal-database-les-bases-et-perfectionnement
Db2 ia formation-db2-universal-database-les-bases-et-perfectionnementCERTyou Formation
 
Active Directory : nouveautés Windows Server 2012
Active Directory : nouveautés Windows Server 2012Active Directory : nouveautés Windows Server 2012
Active Directory : nouveautés Windows Server 2012Microsoft Technet France
 
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans AzureSQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans AzureGUSS
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdfImaneZoubir1
 
Sql saturday 323 paris 2014 azure migration iaas et paas
Sql saturday 323 paris 2014   azure migration iaas et paasSql saturday 323 paris 2014   azure migration iaas et paas
Sql saturday 323 paris 2014 azure migration iaas et paasChristophe Laporte
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASGuillaume Sauthier
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesGeeks Anonymes
 
Cl463 g formation-db2-10-5-for-luw-administration-avancee-avec-db2-blu-accele...
Cl463 g formation-db2-10-5-for-luw-administration-avancee-avec-db2-blu-accele...Cl463 g formation-db2-10-5-for-luw-administration-avancee-avec-db2-blu-accele...
Cl463 g formation-db2-10-5-for-luw-administration-avancee-avec-db2-blu-accele...CERTyou Formation
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurMicrosoft Technet France
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcminfcom
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)Aymeric Weinbach
 
MySQL 5, un SGBDR mature ?
MySQL 5, un SGBDR mature ?MySQL 5, un SGBDR mature ?
MySQL 5, un SGBDR mature ?Olivier DASINI
 
Cv871 g formation-utilitaires-pour-les-administrateurs-de-base-de-donnees-ibm...
Cv871 g formation-utilitaires-pour-les-administrateurs-de-base-de-donnees-ibm...Cv871 g formation-utilitaires-pour-les-administrateurs-de-base-de-donnees-ibm...
Cv871 g formation-utilitaires-pour-les-administrateurs-de-base-de-donnees-ibm...CERTyou Formation
 
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Pierre Ternon
 
Migration d’annuaires propriétaires vers OpenLDAP : retours d’expérience et b...
Migration d’annuaires propriétaires vers OpenLDAP : retours d’expérience et b...Migration d’annuaires propriétaires vers OpenLDAP : retours d’expérience et b...
Migration d’annuaires propriétaires vers OpenLDAP : retours d’expérience et b...Clément OUDOT
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Xavier NOPRE
 
Cl800 g formation-ibm-db2-9-8-purescale-implementation-et-controle-pour-les-a...
Cl800 g formation-ibm-db2-9-8-purescale-implementation-et-controle-pour-les-a...Cl800 g formation-ibm-db2-9-8-purescale-implementation-et-controle-pour-les-a...
Cl800 g formation-ibm-db2-9-8-purescale-implementation-et-controle-pour-les-a...CERTyou Formation
 

Similar to Plsql2 (20)

nstance.pptx
nstance.pptxnstance.pptx
nstance.pptx
 
oracle : le PL-SQL
oracle : le PL-SQLoracle : le PL-SQL
oracle : le PL-SQL
 
Db2 ia formation-db2-universal-database-les-bases-et-perfectionnement
Db2 ia formation-db2-universal-database-les-bases-et-perfectionnementDb2 ia formation-db2-universal-database-les-bases-et-perfectionnement
Db2 ia formation-db2-universal-database-les-bases-et-perfectionnement
 
Active Directory : nouveautés Windows Server 2012
Active Directory : nouveautés Windows Server 2012Active Directory : nouveautés Windows Server 2012
Active Directory : nouveautés Windows Server 2012
 
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans AzureSQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
 
Sql saturday 323 paris 2014 azure migration iaas et paas
Sql saturday 323 paris 2014   azure migration iaas et paasSql saturday 323 paris 2014   azure migration iaas et paas
Sql saturday 323 paris 2014 azure migration iaas et paas
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnAS
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexes
 
Cl463 g formation-db2-10-5-for-luw-administration-avancee-avec-db2-blu-accele...
Cl463 g formation-db2-10-5-for-luw-administration-avancee-avec-db2-blu-accele...Cl463 g formation-db2-10-5-for-luw-administration-avancee-avec-db2-blu-accele...
Cl463 g formation-db2-10-5-for-luw-administration-avancee-avec-db2-blu-accele...
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL Serveur
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcm
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)
 
MySQL 5, un SGBDR mature ?
MySQL 5, un SGBDR mature ?MySQL 5, un SGBDR mature ?
MySQL 5, un SGBDR mature ?
 
Cv871 g formation-utilitaires-pour-les-administrateurs-de-base-de-donnees-ibm...
Cv871 g formation-utilitaires-pour-les-administrateurs-de-base-de-donnees-ibm...Cv871 g formation-utilitaires-pour-les-administrateurs-de-base-de-donnees-ibm...
Cv871 g formation-utilitaires-pour-les-administrateurs-de-base-de-donnees-ibm...
 
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
 
Migration d’annuaires propriétaires vers OpenLDAP : retours d’expérience et b...
Migration d’annuaires propriétaires vers OpenLDAP : retours d’expérience et b...Migration d’annuaires propriétaires vers OpenLDAP : retours d’expérience et b...
Migration d’annuaires propriétaires vers OpenLDAP : retours d’expérience et b...
 
Retour d'expérience sur PowerShell
Retour d'expérience sur PowerShellRetour d'expérience sur PowerShell
Retour d'expérience sur PowerShell
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
 
Cl800 g formation-ibm-db2-9-8-purescale-implementation-et-controle-pour-les-a...
Cl800 g formation-ibm-db2-9-8-purescale-implementation-et-controle-pour-les-a...Cl800 g formation-ibm-db2-9-8-purescale-implementation-et-controle-pour-les-a...
Cl800 g formation-ibm-db2-9-8-purescale-implementation-et-controle-pour-les-a...
 

More from rchbeir

Web ontologie language (par RAFEH Aya et VAILLEUX Arnaud)
Web ontologie language (par RAFEH Aya et VAILLEUX Arnaud)Web ontologie language (par RAFEH Aya et VAILLEUX Arnaud)
Web ontologie language (par RAFEH Aya et VAILLEUX Arnaud)rchbeir
 
SS tree (par SYLLA Demba et TALBI Rachid)
SS tree (par SYLLA Demba et TALBI Rachid)SS tree (par SYLLA Demba et TALBI Rachid)
SS tree (par SYLLA Demba et TALBI Rachid)rchbeir
 
Ranking (par IBRAHIM Sirine et TANIOS Dany)
Ranking (par IBRAHIM Sirine et TANIOS	 Dany)Ranking (par IBRAHIM Sirine et TANIOS	 Dany)
Ranking (par IBRAHIM Sirine et TANIOS Dany)rchbeir
 
Crawlers (par DE COURCHELLE Inès et JACOB Sophie)
Crawlers (par DE COURCHELLE Inès et JACOB Sophie)Crawlers (par DE COURCHELLE Inès et JACOB Sophie)
Crawlers (par DE COURCHELLE Inès et JACOB Sophie)rchbeir
 
Quad-Tree et Kd-Tree (par MARQUES Patricia et OLIVIER Aymeric)
Quad-Tree et Kd-Tree (par MARQUES Patricia et OLIVIER Aymeric)Quad-Tree et Kd-Tree (par MARQUES Patricia et OLIVIER Aymeric)
Quad-Tree et Kd-Tree (par MARQUES Patricia et OLIVIER Aymeric)rchbeir
 
NoSQL (par HEGUY Xabier)
NoSQL (par HEGUY Xabier)NoSQL (par HEGUY Xabier)
NoSQL (par HEGUY Xabier)rchbeir
 
Mpeg7 et comm ontology (par MOHIBE Amine et BENSLIMANE Mohamed-Amine)
Mpeg7 et comm ontology (par MOHIBE Amine et BENSLIMANE Mohamed-Amine)Mpeg7 et comm ontology (par MOHIBE Amine et BENSLIMANE Mohamed-Amine)
Mpeg7 et comm ontology (par MOHIBE Amine et BENSLIMANE Mohamed-Amine)rchbeir
 
LSI latent (par HATOUM Saria et DONGO ESCALANTE Irvin Franco)
LSI latent (par HATOUM Saria et DONGO ESCALANTE Irvin Franco)LSI latent (par HATOUM Saria et DONGO ESCALANTE Irvin Franco)
LSI latent (par HATOUM Saria et DONGO ESCALANTE Irvin Franco)rchbeir
 
Arbre b (par EL HACHEM Marwan et RICHA Elias)
Arbre b (par EL HACHEM Marwan et RICHA Elias)Arbre b (par EL HACHEM Marwan et RICHA Elias)
Arbre b (par EL HACHEM Marwan et RICHA Elias)rchbeir
 
Adaptative hypermedia (par MALKI Sara et MAKSIMOVICH Aleksandra)
Adaptative hypermedia (par MALKI Sara et MAKSIMOVICH Aleksandra)Adaptative hypermedia (par MALKI Sara et MAKSIMOVICH Aleksandra)
Adaptative hypermedia (par MALKI Sara et MAKSIMOVICH Aleksandra)rchbeir
 
Information Retrieval
Information RetrievalInformation Retrieval
Information Retrievalrchbeir
 

More from rchbeir (11)

Web ontologie language (par RAFEH Aya et VAILLEUX Arnaud)
Web ontologie language (par RAFEH Aya et VAILLEUX Arnaud)Web ontologie language (par RAFEH Aya et VAILLEUX Arnaud)
Web ontologie language (par RAFEH Aya et VAILLEUX Arnaud)
 
SS tree (par SYLLA Demba et TALBI Rachid)
SS tree (par SYLLA Demba et TALBI Rachid)SS tree (par SYLLA Demba et TALBI Rachid)
SS tree (par SYLLA Demba et TALBI Rachid)
 
Ranking (par IBRAHIM Sirine et TANIOS Dany)
Ranking (par IBRAHIM Sirine et TANIOS	 Dany)Ranking (par IBRAHIM Sirine et TANIOS	 Dany)
Ranking (par IBRAHIM Sirine et TANIOS Dany)
 
Crawlers (par DE COURCHELLE Inès et JACOB Sophie)
Crawlers (par DE COURCHELLE Inès et JACOB Sophie)Crawlers (par DE COURCHELLE Inès et JACOB Sophie)
Crawlers (par DE COURCHELLE Inès et JACOB Sophie)
 
Quad-Tree et Kd-Tree (par MARQUES Patricia et OLIVIER Aymeric)
Quad-Tree et Kd-Tree (par MARQUES Patricia et OLIVIER Aymeric)Quad-Tree et Kd-Tree (par MARQUES Patricia et OLIVIER Aymeric)
Quad-Tree et Kd-Tree (par MARQUES Patricia et OLIVIER Aymeric)
 
NoSQL (par HEGUY Xabier)
NoSQL (par HEGUY Xabier)NoSQL (par HEGUY Xabier)
NoSQL (par HEGUY Xabier)
 
Mpeg7 et comm ontology (par MOHIBE Amine et BENSLIMANE Mohamed-Amine)
Mpeg7 et comm ontology (par MOHIBE Amine et BENSLIMANE Mohamed-Amine)Mpeg7 et comm ontology (par MOHIBE Amine et BENSLIMANE Mohamed-Amine)
Mpeg7 et comm ontology (par MOHIBE Amine et BENSLIMANE Mohamed-Amine)
 
LSI latent (par HATOUM Saria et DONGO ESCALANTE Irvin Franco)
LSI latent (par HATOUM Saria et DONGO ESCALANTE Irvin Franco)LSI latent (par HATOUM Saria et DONGO ESCALANTE Irvin Franco)
LSI latent (par HATOUM Saria et DONGO ESCALANTE Irvin Franco)
 
Arbre b (par EL HACHEM Marwan et RICHA Elias)
Arbre b (par EL HACHEM Marwan et RICHA Elias)Arbre b (par EL HACHEM Marwan et RICHA Elias)
Arbre b (par EL HACHEM Marwan et RICHA Elias)
 
Adaptative hypermedia (par MALKI Sara et MAKSIMOVICH Aleksandra)
Adaptative hypermedia (par MALKI Sara et MAKSIMOVICH Aleksandra)Adaptative hypermedia (par MALKI Sara et MAKSIMOVICH Aleksandra)
Adaptative hypermedia (par MALKI Sara et MAKSIMOVICH Aleksandra)
 
Information Retrieval
Information RetrievalInformation Retrieval
Information Retrieval
 

Plsql2

  • 1. (   LABORATOIRE D’INFORMATIQUE DE L’UNIVERSITE DE PAU ET DES PAYS DE L’ADOUR BDD Avancées Fonctions et Procédures Richard Chbeir, Ph.D.
  • 3. Introduction •  Ces objets sont stockés une seule fois dans la base •  Ils sont partageables et gérées par plusieurs applications de façon centralisée •  Ils sont soumis à tous les mécanismes de sécurité et de confidentialité 10/12/13 Page 3
  • 4. Introduction •  Pour créer un objet procédural, il faut posséder les privilèges –  CREATE PROCEDURE (création locale) –  CREATE ANY PROCEDURE (création dans d'autres schémas) 10/12/13 Page 4
  • 5. Introduction •  Pour exécuter un objet procédural, il faut posséder les privilèges –  EXECUTE PROCEDURE (exécution locale) –  EXECUTE ANY PROCEDURE (exécution dans d'autres schémas) •  Pour donner à un autre utilisateur le droit d'exécution –  GRANT EXECUTE ON ma_procédure TO autre_utilisateur 10/12/13 Page 5
  • 6. Procédure •  Est un bloc PL/SQL nommé pouvant contenir –  –  –  –  –  •  •  •  •  Des commandes SQL (LMD) Des instructions PL/SQL Des variables et des constantes Des curseurs Un gestionnaire d'erreurs Peut être paramétrée et exécutée Utilisée pour réaliser une (ou plusieurs) action(s) Peut être récursif et surchargé Est compilé avant le stockage –  Ne nécessite plus d'analyse ni de compilation à l'exécution –  Sa mise en mémoire permettra d'améliorer les performances 10/12/13 Page 6
  • 7. Procédure •  Concernant la sécurité –  On peut autoriser l'accès à certaines tables uniquement à travers des procédures sans avoir des droits d'accès aux tables en dehors des procédures 10/12/13 Page 7
  • 8. Procédure •  Concernant l'intégrité –  Les procédures assurent la même fonctionnalité indépendamment de la partie appelante –  La recompilation d'une procédure en cas de modification n'exige pas la recompilation de l'ensemble du code de l'application 10/12/13 Page 8
  • 9. Procédure •  Concernant les performances –  Réduction du trafic sur le réseau par la soumission d'un bloc PL/SQL au lieu de plusieurs commandes SQL –  Compilation des procédures cataloguées (le moteur ne recompile pas les procédures au moment de l'exécution –  Exécution immédiate de la procédure si elle est dans la SGA (pas d'accès disque) –  Partage de l'exécution d'une procédure par plusieurs utilisateurs (notion de mémoire partagée) 10/12/13 Page 9
  • 10. Procédure •  Structure générale PROCEDURE nom_procédure [(paramètres, …)] {IS | AS} Déclaration des variables locales BEGIN Instructions SQL et PL/SQL EXCEPTION Traitement des exceptions END [nom_procédure]; 10/12/13 Page 10
  • 11. Procédure •  Création CREATE [OR REPLACE] PROCEDURE [schéma.]nom_procédure [(paramètres, …)] {IS | AS} Déclaration des variables locales BEGIN Instructions SQL et PL/SQL EXCEPTION Traitement des exceptions END [nom_procédure]; Nomparametre [ IN | OUT | IN OUT] type [{:=default}] 10/12/13 Page 11 IN: variable passée en entrée (Par défaut) OUT : variable renseignée par la procédure puis envoyée à l'appelant IN OUT : passage par référence Le type ne doit pas contenir d'indication sur sa taille
  • 12. Procédure •  Exemple : Augmentation de salaire 10/12/13 Page 12 CREATE OR REPLACE PROCEDURE Augmentation_salaire (NumSal integer, Montant Real) IS SalaireActuel Real; SalaireNull Exception; BEGIN SELECT sal into SalaireActuel FROM emp where empno = NumSal; IF (SalaireActuel IS NULL) THEN RAISE SalaireNull; ELSE UPDATE emp set sal = sal + Montant Where empno = NumSal; END IF; EXCEPTION WHEN no_data_found THEN dbms_output.put_line(NumSal || 'Est inconnu'); WHEN SalaireNull THEN dbms_output.put_line(NumSal || 'a un Salaire Null'); END Augmentation_Salaire; /
  • 13. Procédure •  Exécution de la procédure AugmentationSalaire BEGIN A partir d'une autre procédure … AugmentationSalaire (100, 1000); … A partir de SQL*Plus 10/12/13 Page 13 SQL> EXECUTE AugmentationSalaire (100, 1000);
  • 14. Procédure •  Mais PL/SQL exige la déclaration d'une procédure avant de l'utiliser DECLARE PROCEDURE AccorderAugmentation (. . .) IS BEGIN AugmentationSalaire (. . .); -- non déclarée END; PROCEDURE AugmentationSalaire (. . .) IS BEGIN ... END; ... 10/12/13 Page 14
  • 15. Procédure •  Mais PL/SQL exige la déclaration d'une procédure avant de l'utiliser Solution 1 DECLARE PROCEDURE AugmentationSalaire (. . .) IS BEGIN ... END; PROCEDURE AccorderAugmentation (. . .) IS BEGIN AugmentationSalaire (. . .); -- déjà déclarée END; ... 10/12/13 Page 15
  • 16. Procédure •  Mais PL/SQL exige la déclaration d'une procédure avant de l'utiliser Solution 2 DECLARE PROCEDURE AugmentationSalaire (…); --forward declaration PROCEDURE AccorderAugmentation (. . .) IS BEGIN AugmentationSalaire (. . .); -- déjà déclarée END; PROCEDURE AugmentationSalaire (. . .) IS BEGIN ... END; ... 10/12/13 Page 16
  • 17. Procédure •  Surcharge ou overloading –  Possible dans un bloc ou un package –  Pas possible si seulement les noms des paramètres ou leur mode de passage sont différents DECLARE …. PROCEDURE Augmentation_salaire (NumSal integer, Montant Real) IS … END Augmentation_Salaire; PROCEDURE Augmentation_salaire (Montant Real) IS … END Augmentation_Salaire; / 10/12/13 Page 17
  • 18. Procédure •  Modification d'une procédure –  Après n'importe quelle modification dans une procédure, on est obligé de recompiler avec SQL> ALTER PROCEDURE [Schéma.]nom_procédure COMPILE; •  Exemple SQL> ALTER PROCEDURE AugmentationSalaire COMPILE; 10/12/13 Page 18
  • 19. Procédure •  Suppression d'une procédure SQL> DROP PROCEDURE [Schéma.]nom_procédure; 10/12/13 Page 19
  • 20. Procédure •  Exemple CREATE PROCEDURE suppression_Salarié (num_emp number) AS BEGIN DELETE FROM emp WHER empno = num_emp; END / Quelles sont les erreurs identifiées ? SQL> SHOW ERRORS ERRO…. 10/12/13 Page 20
  • 21. Procédure •  Exemple CREATE PROCEDURE suppression_Salarié (num_emp number) AS BEGIN DELETE FROM emp WHER empno = num_emp; END / Quelles sont les erreurs identifiées ? –  On peut également interroger •  USER_ERRORS, ALL_ERRORS, DBA_ERRORS 10/12/13 Page 21
  • 22. Procédure •  Les sources de vos procédures sont stockées dans –  USER_SOURCE –  ALL_SOURCE –  DBA_SOURCE 10/12/13 Page 22
  • 23. Procédure externe •  A partir de la version 8i, on peut intégrer des procédures écrites dans d'autres langages (Java, C, Pascal, etc.) 10/12/13 Page 23
  • 24. Fonction •  Est une procédure qui renvoie une valeur •  Possède dans sa structure la clause supplémentaire RETURN •  Peut être utilisée dans les requêtes SQL FUNCTION nom_fonction [(paramètres, …)] RETURN type {IS | AS} Déclaration des variables locales BEGIN Instructions SQL et PL/SQL RETURN (valeur); EXCEPTION Traitement des exceptions END [nom_fonction]; 10/12/13 Page 24 Nomparamètre [IN] type [, nomparamètre2 [IN] type … Où type ne doit pas contenir d'indication sur la taille
  • 25. Fonction •  Création d'une fonction stockée CREATE [OR REPLACE] FUNCTION [schéma.]nom_fonction [(paramètres, …)] RETURN type {IS | AS} Déclaration des variables locales BEGIN Instructions SQL et PL/SQL RETURN (Valeur); EXCEPTION Traitement des exceptions END [nom_fonction]; 10/12/13 Page 25
  • 26. Fonction •  Exemple d'une fonction VérificationSalaire CREATE or replace FUNCTION VérificationSalaire (NumGrade integer, Montant Real) RETURN boolean AS MinSalaire Real; MaxSalaire Real; BEGIN SELECT losal, hisal INTO MinSalaire, MaxSalaire FROM salgrade WHERE grade = NumGrade; RETURN ((Montant >= MinSalaire) AND (Montant <= MaxSalaire)); END VérificationSalaire; / 10/12/13 Page 26
  • 27. Fonction •  Exécution de la fonction VérificationSalaire A partir d'une autre procédure A partir de SQL*Plus 10/12/13 Page 27 BEGIN … IF VérificationSalaire (100, 1000) THEN … SQL> select VérificationSalaire (100, 1000) FROM Dual;
  • 28. Fonction •  Suppression d'une fonction SQL> DROP FUNCTION [Schéma.]nom_fonction; 10/12/13 Page 28
  • 29. Fonction •  Surcharge ou overloading –  Pas possible si seul le type retourné est différent 10/12/13 Page 29
  • 30. Package •  Permet d'encapsuler dans une unité de la BDD plusieurs –  Procédures, fonctions, curseurs et variables •  Ne peut pas être appelé, paramétré, ou imbriqué •  Apporte plusieurs avantages –  Meilleure gestion de privilèges –  Meilleur moyen de structuration et de d'organisation –  Meilleures performances •  Le moteur charge au noyau le package entier 10/12/13 Page 30
  • 31. Package •  Se compose de deux parties Spécification Application Corps 10/12/13 Page 31 BDD Oracle
  • 32. Package •  Création d'un Package –  Création des spécifications •  Consiste à déclarer les procédures, fonctions, constates, variables, et les exceptions accessibles par le public autorisé –  Création du corps •  Consiste à définir les procédures, fonctions, constates, variables, et les exceptions déclarées dans la section spécifications du package •  Peut contenir également d'autres objets (privés) non déclarés dans la spécification qui seront inaccessibles en dehors du corps du package •  Toute l'implémentation est cachée aux applications 10/12/13 Page 32
  • 33. Package •  Création d'un Package –  Création de la section spécification CREATE [OR REPLACE] PACKAGE [Schéma.]nom_package {IS |AS} Déclatation des variables globales Interface des sous-programmes END [nom_package]; 10/12/13 Page 33
  • 34. Package •  Création d'un Package –  Création du corps CREATE [OR REPLACE] PACKAGE BODY [Schéma.]nom_package {IS |AS} Déclaration des variables locales corps des sous-programmes publics et privés BEGIN …. END [nom_package]; 10/12/13 Page 34
  • 35. Package •  Exemple CREATE OR REPLACE PACKAGE Gestion_Salarié IS FUNCTION Embaucher (nom VARCHAR2, fonction VARCHAR2, Chef NUMBER, eentrée DATE, salaire NUMBER, commission NUMBER, NuméroDept NUMBER) RETURN NUMBER; PROCEDURE Suppression_Salarié (NuméroSalarié NUMBER); PROCEDURE Augmentation_Salaire (NumSal NUMBER, Montant REAL); END Gestion_Salarié ; 10/12/13 Page 35
  • 36. Package •  Exemple CREATE OR REPLACE PACKAGE BODY Gestion_Salarié IS FUNCTION Embaucher (nom VARCHAR2, fonction VARCHAR2, Chef NUMBER, dateentrée DATE, salaire NUMBER, commission NUMBER, NuméroDept NUMBER) RETURN NUMBER IS Nouveau NUMBER(8); BEGIN SELECT MAX(empno)+1 INTO Nouveau FROM emp; INSERT INTO emp VALUES (Nouveau, nom, fonction, chef, dateentrée, salaire, commission, NuméroDept); RETURN (Nouveau); END Embaucher; PROCEDURE Suppression_Salarié (NuméroSalarié NUMBER); … END Suppression_Salarié; PROCEDURE Augmentation_Salaire (NumSal NUMBER, Montant REAL); … END Augmentation_Salaire; END Gestion_Salarié ; 10/12/13 Page 36
  • 37. Package •  Appel d'une procédure ou fonction packagée A partir de SQL*Plus SQL> EXECUTE Nompackage.nom_procédure [(paramètre)]; A partir d'une autre procédure 10/12/13 Page 37 BEGIN … Nompackage.nomprocédure [(paramètres)]; …
  • 38. Package •  Suppression d'un package SQL> DROP PACKAGE [Schéma.]nom_package; 10/12/13 Page 38