Exercice
Soit la séquence d'instructions suivante sous Oracle :
1
CREATE TABLE t_personnes (
2
a_nom varchar(10),
3
a_prenom varchar(10)
4
);
5
6
INSERT INTO t_personnes
7
VALUES ('dupond', 'paul');
8
9
INSERT INTO t_personnes
10
VALUES ('dupond', 'pierre');
11
12
CREATE FUNCTION fCherche (p_nom varchar)
13
RETURN varchar
14
IS
15
TYPE r_personne IS RECORD
16
(nom varchar(10), prenom varchar(10));
17
v_personne r_personne;
18
BEGIN
19
SELECT a_nom, a_prenom
20
INTO v_personne
21
FROM t_personnes
22
WHERE a_nom=p_nom;
23
RETURN v_personne.nom;
24
EXCEPTION
25
WHEN OTHERS THEN
26
RETURN ('erreur');
27
END;
CREATE TABLE t_personnes ( a_nom varchar(10), a_prenom varchar(10) ); INSERT INTO t_personnes VALUES ('dupond', 'paul'); INSERT INTO t_personnes VALUES ('dupond', 'pierre'); CREATE FUNCTION fCherche (p_nom varchar) RETURN varchar IS TYPE r_personne IS RECORD (nom varchar(10), prenom varchar(10)); v_personne r_personne; BEGIN SELECT a_nom, a_prenom INTO v_personne FROM t_personnes WHERE a_nom=p_nom; RETURN v_personne.nom; EXCEPTION WHEN OTHERS THEN RETURN ('erreur'); END;
Que renvoie la fonction "fCherche" si on lui passe en paramètre la chaîne 'dupond' ?
Cette fonction renvoie le nom passé en paramètre si celui-ci est présent une et une seule fois dans la table "t_personnes". Si le nom est présent plus d'une fois, une exception est déclenchée, car la clause SELECT INTO ne doit renvoyer qu'un seul enregistrement.