Académique Documents
Professionnel Documents
Culture Documents
PL / SQL
Les sous-programmes: procédures et fonctions
Ines BAKLOUTI
ines.baklouti@esprit.tn
Plan
2/18
Les procédures et fonctions stockées (autonomes)
Les procédures et fonctions non stockées (non autonomes)
Introduction
3/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
Plan
4/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
5/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
Syntaxe
CREATE [OR REPLACE] PROCEDURE nom procédure
[(argument1 [mode passage1] type1. . . ,[argumentN [mode passageN] typeN])]
IS
–Section déclarative optionelle et sans utiliser le mot clé DECLARE
[déclaration variables locales]
BEGIN
–Section exécutable obligatoire
[section exception]
END [nom procédure];
6/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
Exemple
CREATE OR REPLACE PROCEDURE add dept (dept id IN
departments.department id%TYPE, dept name IN
departments.department name%TYPE, nbre OUT number)
IS
BEGIN
insert into departments(department id,department name)
values(dept id,dept name);
commit;
select count(*) into nbre from departments;
dbms output.put line(’Le nombre de département est : ’||nbre);
END;
7/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
Exemple
DECLARE
nb number;
BEGIN
add dept(300,’IT’,nb);
end;
8/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
Syntaxe
CREATE [OR REPLACE] FUNCTION nom fonction
[(argument1 [mode passage1] type1. . . ,[argumentN [mode passageN] typeN])]
RETURN type retour IS
–Section déclarative optionelle et sans utiliser le mot clé DECLARE
[déclaration variables locales]
BEGIN
–Section exécutable obligatoire
[section exception]
END [nom fonction];
9/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
Exemple 1
CREATE OR REPLACE FUNCTION fn check sal (empno employees.employee id%TYPE)
RETURN Boolean IS
dept id employees.department id%TYPE;
sal employees.salary%TYPE;
avg sal employees.salary%TYPE;
BEGIN
SELECT salary,department id INTO sal,dept id FROM employees WHERE employee id=empno;
SELECT avg(salary) INTO avg sal FROM employees WHERE department id=dept id;
IF sal > avg sal THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;
10/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
Exemple 2
CREATE OR REPLACE FUNCTION fn dept name (deptno number)
RETURN varchar IS
dname varchar(30);
BEGIN
select department name into dname from departments where
department id=deptno;
RETURN dname;
END;
11/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
Exemple 1
BEGIN
IF (fn check sal(124)) THEN
DBMS OUTPUT.PUT LINE(’Salary > average’);
ELSE
DBMS OUTPUT.PUT LINE(’Salary < average’);
END IF;
END;
Exemple 2
SELECT department id No dept, fn dept name(department id)
Nom dept,last name Nom, first name Prenom FROM employees order by
department id;
12/18
Les procédures et fonctions stockées (autonomes) Les procédures stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions stockées
Remarques
13/18
Les procédures et fonctions stockées (autonomes) Les procédures non stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions non stockées
Plan
14/18
Les procédures et fonctions stockées (autonomes) Les procédures non stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions non stockées
Syntaxe
PROCEDURE nom procédure
[(argument1 [mode passage1] type1. . . ,[argumentN [mode passageN] typeN])]
IS
–Section déclarative optionelle et sans utiliser le mot clé DECLARE
[déclaration variables locales]
BEGIN
–Section exécutable obligatoire
[section exception]
END [nom procédure];
15/18
Les procédures et fonctions stockées (autonomes) Les procédures non stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions non stockées
Exemple
DECLARE
a number:=10;
b number:=30;
s number;
p number;
PROCEDURE myproc(a in number, b in number, surf out number, peri out number)
IS
BEGIN
surf:=a*b;
peri:=(a+b)*2;
END myproc;
BEGIN
myproc(a,b,s,p);
dbms output.put line(’La surface: ’||s);
dbms output.put line(’Le périmètre: ’||p);
END;
16/18
Les procédures et fonctions stockées (autonomes) Les procédures non stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions non stockées
Syntaxe
FUNCTION nom fonction
[(argument1 [mode passage1] type1. . . ,[argumentN [mode passageN] typeN])]
RETURN type retour IS
–Section déclarative optionelle et sans utiliser le mot clé DECLARE
[déclaration variables locales]
BEGIN
–Section exécutable obligatoire
[section exception]
END [nom fonction];
17/18
Les procédures et fonctions stockées (autonomes) Les procédures non stockées
Les procédures et fonctions non stockées (non autonomes) Les fonctions non stockées
Exemple
DECLARE
a number:=10;
b number:=30;
c number;
FUNCTION myfunc(a number, b number)
RETURN number IS
surf number;
BEGIN
surf:=a*b;
return surf;
END;
BEGIN
c:=myfunc(a,b);
dbms output.put line(’La surface: ’||c);
END;
18/18