3 Copyright © Oracle Corporation, 2001. Tous droits réservés. Créer des fonctions.

Slides:



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

Oracle: OO.
Contrôles d'accès aux données
T ECHNOLOGIES O RACLE Manipulation des données © sebvita.com.
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
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.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Les transactions.
OPTIMISATION DE BASE DE DONNEES ORACLE
Procédures Stockées Schedule: Timing Topic 60 minutes Lecture
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
PHP & My SQL.
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Gérer la sécurité des mots de passe et les ressources
PHP 5° PARTIE : LES COOKIES
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données.
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
Gérer l'instance Oracle
Manipulation des Données
Module 7 : Utilisation de requêtes élaborées
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
6 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux packages.
Sélection de colonnes (la projection)
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.
Les Contraintes.
Gérer les utilisateurs
SQL : Langage de Manipulation des données
Révision du langage PL/SQL
Création et Gestion de Tables
Créer une base de données
Gérer les fichiers de journalisation
Objectifs A la fin de ce chapitre, vous pourrez :
4 Copyright © Oracle Corporation, Tous droits réservés. Gérer les sous-programmes.
Les vues Une vue: c’est une relation virtuelle. Définie par:
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.
Procédures Stockées Fonctions Paquetages
Les bases de données Séance 8 Jointures.
CHAPITRE 4 PL/SQL Langage SQL en mode procédural (PL/SQL):
Le langage SQL.
Initiation aux bases de données et à la programmation événementielle
INTRODUCTION AUX BASES DE DONNEES Base et métabase
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.
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Le Langage de Manipulation de Données LMD Module 6.
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 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
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.
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
6 Copyright © 2004, Oracle. Tous droits réservés. Utiliser des sous-interrogations pour résoudre des interrogations.
Transcription de la présentation:

3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions

3-2 Copyright © Oracle Corporation, Tous droits réservés. Objectives A la fin de ce chapitre, vous pourrez : décrire les différentes utilisations des fonctions créer des fonctions stockées appeler une fonction supprimer une fonction faire la distinction entre une procédure et une fonction

3-3 Copyright © Oracle Corporation, Tous droits réservés. Présentation des fonctions stockées Une fonction est un bloc PL/SQL nommé qui renvoie une valeur Une fonction peut être stockée en tant qu'objet de schéma dans la base de données en vue d'exécutions répétées Une fonction est appelée dans une expression

3-4 Copyright © Oracle Corporation, Tous droits réservés. CREATE [OR REPLACE] FUNCTION function_name [(parameter1 [mode1] datatype1, parameter2 [mode2] datatype2,...)] RETURN datatype IS|AS PL/SQL Block; Le bloc PL/SQL doit comporter au moins une instruction RETURN. Syntaxe pour la création de fonctions

3-5 Copyright © Oracle Corporation, Tous droits réservés. Créer une fonction Appel 3 1 Editeur Code de création de fonction file.sql i SQL*Plus 2 Chargement et exécution du fichier file.sql Oracle Code source Compila- tion Pseudo-code Fonction créée

3-6 Copyright © Oracle Corporation, Tous droits réservés. Créer une fonction stockée avec i SQL*Plus 1.Entrer le texte de l'instruction CREATE FUNCTION dans un éditeur et l'enregistrer en tant que fichier script SQL 2.Exécuter le fichier script pour stocker le code source et compiler la fonction 3. Utiliser SHOW ERRORS pour visualiser les erreurs de compilation 4.Une fois la compilation correctement effectuée, appeler la fonction

3-7 Copyright © Oracle Corporation, Tous droits réservés. Exemple de création d'une fonction stockée en utilisant i SQL*Plus CREATE OR REPLACE FUNCTION get_sal (p_id IN employees.employee_id%TYPE) RETURN NUMBER IS v_salary employees.salary%TYPE :=0; BEGIN SELECT salary INTO v_salary FROM employees WHERE employee_id = p_id; RETURN v_salary; END get_sal; / get_salary.sql

3-8 Copyright © Oracle Corporation, Tous droits réservés. Exécuter des fonctions Appeler une fonction dans une expression PL/SQL Créer une variable destinée à recevoir la valeur renvoyée Exécuter la fonction. La valeur renvoyée par l'instruction RETURN sera placée dans la variable

3-9 Copyright © Oracle Corporation, Tous droits réservés. Exemple d'exécution de fonctions 1. Charger et exécuter le fichier get_salary.sql pour créer la fonction Fonction GET_SAL p_id RETURN v_salary 117 Environnement appelant VARIABLE g_salary NUMBER EXECUTE :g_salary := get_sal(117) PRINT g_salary

3-10 Copyright © Oracle Corporation, Tous droits réservés. Avantages liés aux fonctions définies par l'utilisateur dans les expressions SQL Elles complètent le langage SQL en permettant de réaliser des traitements qui seraient trop complexes, malaisés, voire impossibles en SQL Utilisées dans la clause WHERE pour filtrer les données, elles peuvent s'avérer plus efficaces qu'un filtrage au sein de l'application Elles permettent de manipuler les chaînes de caractères

3-11 Copyright © Oracle Corporation, Tous droits réservés. Exemple d'appel de fonctions dans des expressions SQL CREATE OR REPLACE FUNCTION tax(p_value IN NUMBER) RETURN NUMBER IS BEGIN RETURN (p_value * 0.08); END tax; / SELECT employee_id, last_name, salary, tax(salary) FROM employees WHERE department_id = 100;

3-12 Copyright © Oracle Corporation, Tous droits réservés. Emplacements d'appel des fonctions définies par l'utilisateur Liste de sélection d'une commande SELECT Condition des clauses WHERE et HAVING Clauses CONNECT BY, START WITH, ORDER BY et GROUP BY Clause VALUES de la commande INSERT Clause SET de la commande UPDATE

3-13 Copyright © Oracle Corporation, Tous droits réservés. Restrictions relatives à l'appel de fonctions à partir d'expressions SQL Pour pouvoir être appelée depuis des expressions SQL, une fonction définie par l'utilisateur doit : être une fonction stockée accepter uniquement des paramètres IN accepter uniquement des types de données SQL valides (et non des types spécifiques au langage PL/SQL) en tant que paramètres renvoyer des types de données SQL valides et non des types spécifiques au langage PL/SQL

3-14 Copyright © Oracle Corporation, Tous droits réservés. Restrictions relatives aux appels des fonctions à partir d'expressions SQL Les fonctions appelées depuis des expressions SQL ne doivent pas contenir d'instructions LMD Les fonctions appelées à partir d'instructions UPDATE/DELETE portant sur une table T ne doivent pas contenir d'instructions LMD concernant la même table T Les fonctions appelées depuis une instruction UPDATE ou DELETE d'une table T ne doivent pas interroger la même table Les fonctions appelées depuis des instructions SQL ne doivent pas contenir d'instructions qui mettent fin aux transactions Les appels de sous-programmes qui ne respectent pas la restriction précédente ne sont pas autorisés dans la fonction

3-15 Copyright © Oracle Corporation, Tous droits réservés. Restrictions relatives aux appels depuis du code SQL CREATE OR REPLACE FUNCTION dml_call_sql (p_sal NUMBER) RETURN NUMBER IS BEGIN INSERT INTO employees(employee_id, last_name, , hire_date, job_id, salary) VALUES(1, 'employee 1', SYSDATE, 'SA_MAN', 1000); RETURN (p_sal + 100); END; / UPDATE employees SET salary = dml_call_sql(2000) WHERE employee_id = 170;

3-16 Copyright © Oracle Corporation, Tous droits réservés. Supprimer des fonctions Supprimer une fonction stockée. DROP FUNCTION function_name Syntaxe : Exemple: Syntaxe : Exemple: DROP FUNCTION get_sal; Tous les privilèges accordés à une fonction sont annulés lorsque celle-ci est supprimée. Lorsque la syntaxe CREATE OR REPLACE est utilisée, la fonction est supprimée et recréée, mais dans ce cas, les privilèges accordés sur la fonction ne sont pas affectés. Tous les privilèges accordés à une fonction sont annulés lorsque celle-ci est supprimée. Lorsque la syntaxe CREATE OR REPLACE est utilisée, la fonction est supprimée et recréée, mais dans ce cas, les privilèges accordés sur la fonction ne sont pas affectés.

3-17 Copyright © Oracle Corporation, Tous droits réservés. Procédure ou fonction ? Procédure ( DECLARE ) BEGIN EXCEPTION END; Paramètre IN Paramètre OUT Paramètre IN OUT Environnement appelant Fonction ( DECLARE ) BEGIN EXCEPTION END; Paramètre IN

3-18 Copyright © Oracle Corporation, Tous droits réservés. Comparer les procédures et les fonctions Procédures S'exécutent en tant qu'instruction PL/SQL Ne contiennent pas de clause RETURN dans l'en-tête Peuvent renvoyer zéro, une ou plusieurs valeurs Peuvent contenir une instruction RETURN Fonctions Sont appelées dans une expression Doivent contenir une clause RETURN dans l'en-tête Doivent renvoyer une seule valeur Doivent contenir au moins une instruction RETURN

3-19 Copyright © Oracle Corporation, Tous droits réservés. Avantages liés aux procédures et aux fonctions stockées Performances améliorées Facilité de maintenance Sécurité et intégrité accrues des données Clarté améliorée du code

3-20 Copyright © Oracle Corporation, Tous droits réservés. Synthèse Ce chapitre vous a permis d'apprendre ce qui suit : Une fonction est un bloc PL/SQL nommé qui doit renvoyer une valeur La syntaxe CREATE FUNCTION permet de créer une fonction Une fonction est appelée dans une expression Une fonction stockée dans la base de données peut être appelée dans des instructions SQL La syntaxe DROP FUNCTION permet de supprimer une fonction de la base de données En règle générale, une procédure permet d'exécuter une action tandis qu'une fonction permet de calculer une valeur

3-21 Copyright © Oracle Corporation, Tous droits réservés. Présentation de l'exercice 3 Dans cet exercice, vous allez : créer des fonctions stockées : –pour interroger une table de base de données et renvoyer des valeurs précises –qui seront utilisées dans une instruction SQL –pour insérer une nouvelle ligne dans une table de base de données en utilisant les valeurs de paramètres indiquées –en utilisant des valeurs de paramètres par défaut appeler une fonction stockée à partir d'une instruction SQL appeler une fonction stockée à partir d'une procédure stockée

3-22 Copyright © Oracle Corporation, Tous droits réservés.

3-23 Copyright © Oracle Corporation, Tous droits réservés.

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