Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parEverard Lecocq Modifié depuis plus de 9 années
1
3 Copyright © Oracle Corporation, 2001. Tous droits réservés. Créer des fonctions
2
3-2 Copyright © Oracle Corporation, 2001. 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-3 Copyright © Oracle Corporation, 2001. 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
4
3-4 Copyright © Oracle Corporation, 2001. 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
5
3-5 Copyright © Oracle Corporation, 2001. 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
6
3-6 Copyright © Oracle Corporation, 2001. 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
7
3-7 Copyright © Oracle Corporation, 2001. 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
8
3-8 Copyright © Oracle Corporation, 2001. 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
9
3-9 Copyright © Oracle Corporation, 2001. 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 2 3 4 VARIABLE g_salary NUMBER EXECUTE :g_salary := get_sal(117) PRINT g_salary
10
3-10 Copyright © Oracle Corporation, 2001. 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
11
3-11 Copyright © Oracle Corporation, 2001. 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;
12
3-12 Copyright © Oracle Corporation, 2001. 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
13
3-13 Copyright © Oracle Corporation, 2001. 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
14
3-14 Copyright © Oracle Corporation, 2001. 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
15
3-15 Copyright © Oracle Corporation, 2001. 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, email, hire_date, job_id, salary) VALUES(1, 'employee 1', 'emp1@company.com', SYSDATE, 'SA_MAN', 1000); RETURN (p_sal + 100); END; / UPDATE employees SET salary = dml_call_sql(2000) WHERE employee_id = 170;
16
3-16 Copyright © Oracle Corporation, 2001. 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.
17
3-17 Copyright © Oracle Corporation, 2001. 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
18
3-18 Copyright © Oracle Corporation, 2001. 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
19
3-19 Copyright © Oracle Corporation, 2001. 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
20
3-20 Copyright © Oracle Corporation, 2001. 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
21
3-21 Copyright © Oracle Corporation, 2001. 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
22
3-22 Copyright © Oracle Corporation, 2001. Tous droits réservés.
23
3-23 Copyright © Oracle Corporation, 2001. Tous droits réservés.
24
3-24 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.