0% ont trouvé ce document utile (0 vote)
130 vues4 pages

Test

Le document est un test sur les blocs anonymes, les curseurs et les sous-programmes en PL/SQL, comprenant des questions à choix multiples, des corrections de code et des réponses à trous. Il couvre des concepts essentiels tels que la déclaration de blocs, l'utilisation de curseurs et la création de procédures et fonctions. Chaque chapitre contient des questions pour évaluer la compréhension des participants sur le langage PL/SQL.

Transféré par

Dk The
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
130 vues4 pages

Test

Le document est un test sur les blocs anonymes, les curseurs et les sous-programmes en PL/SQL, comprenant des questions à choix multiples, des corrections de code et des réponses à trous. Il couvre des concepts essentiels tels que la déclaration de blocs, l'utilisation de curseurs et la création de procédures et fonctions. Chaque chapitre contient des questions pour évaluer la compréhension des participants sur le langage PL/SQL.

Transféré par

Dk The
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Marouane RADDAOUI 3A41

SGBD ESPRIT

Test
Chapitre 1 : Les blocs anonymes (10 questions)

1. QCM. Quel mot-clé permet de lancer un bloc PL/SQL ?


A. BEGIN
B. EXECUTE
C. RUN
D. OPEN
2. Vrai ou Faux. Un bloc anonyme peut être stocké en base.
3. Correspondance. Associer les sections aux rôles :

 DECLARE
 BEGIN
 EXCEPTION
 END
 /

4. Réponse à trous. Complétez le code suivant :

DECLARE
v_sal NUMBER := 3000;
BEGIN
DBMS_OUTPUT.PUT_LINE('Salaire: ' || ______);
END;

5. Composition (Code à corriger). Corrigez le code suivant :

BEGIN
v_num := 100;
DBMS_OUTPUT.PUT_LINE(v_num);
END;

6. QCM Lequel de ces éléments est optionnel dans un bloc PL/SQL ?


A. BEGIN
B. END
C. DECLARE
D. Aucun des éléments
7. Vrai ou Faux. On peut afficher un message dans un bloc anonyme avec
DBMS_OUTPUT.PUT_LINE.
8. Hotspot (à adapter) Dans le bloc suivant, identifiez la ligne qui cause une erreur de
syntaxe :

x NUMBER
BEGIN
x := 10;
DBMS_OUTPUT.PUTLINE(x);
END;

9. Valeur numérique. Quel sera le résultat de l’exécution suivante ?


Marouane RADDAOUI 3A41
SGBD ESPRIT
DECLARE
a NUMBER := 10;
b NUMBER := 5;
BEGIN
DBMS_OUTPUT.PUTLINE(a * b);
END;

10. Code à trous. Complétez pour afficher "Bonjour PL/SQL" :

DECLARE
msg VARCHAR2(20) := 'Bonjour PL/SQL';
BEGIN
DBMS_OUTPUT.PUT(____);
END;

Chapitre 2 : Les curseurs (10 questions)

11. QCM Quel type de curseur doit être déclaré manuellement ?


A. Implicite
B. Automatique
C. Explicite
D. Interne
12. Vrai ou Faux. Un curseur doit toujours être fermé après utilisation.
13. Code à corriger Corrigez le code pour qu'il affiche les noms d'employés :

DECLARE
CURSOR c_emp IS SELECT name FROM employees;
emp_name [Link]%TYPE;
BEGIN
OPEN c_emp;
FETCH emp_name INTO c_emp;
DBMS_OUTPUT.PUT(emp_name);
CLOSE c_emp;
END;

14. Correspondance
Associez chaque étape du curseur à son action :

 OPEN
 FETCH
 CLOSE
 DECLARE

15. QCM
Que permet l’attribut %NOTFOUND ?
A. Vérifie si le curseur a été ouvert
B. Vérifie s’il reste des lignes
C. Vérifie si la dernière récupération a échoué
D. Vérifie si la boucle est terminée
16. Réponse à trous
Complétez la boucle suivante :

DECLARE
Marouane RADDAOUI 3A41
SGBD ESPRIT
CURSOR c IS SELECT emp_id FROM employees;
v_id employees.emp_id%TYPE;
BEGIN
OPEN c;
LOOP
FETCH c INTO v_id;
EXIT WHEN ___________;
DBMS_OUTPUT.PUT(v_id);
END LOOP;
CLOSE c;
END;

17. Code à compléter


Complétez ce bloc pour afficher tous les noms des départements :

CURSOR cur_dep IS SELECT dept_name FROM departments;


v_name departments.dept_name%TYPE;
BEGIN
OPEN cur_dep;
LOOP
FETCH cur_dep INTO v_name;
EXIT WHEN cur_dep%______;
DBMS_OUTPUT.PUTv_name);
END LOOP;
CLOSE cur_dep;
END;

18. Vrai ou Faux


Un curseur peut être utilisé avec une boucle FOR directement sans ouverture explicite.
→ Vrai
19. QCM
Laquelle des boucles suivantes est compatible avec un curseur ?
A. WHILE
B. FOR
C. LOOP
D. Toutes les réponses
20. Valeur numérique
Si une table contient 5 lignes, combien de fois le FETCH sera-t-il exécuté dans une
boucle classique ?
→ Réponse : 5

Chapitre 3 : Les sous-programmes (procédures et fonctions) (10 questions)

21. QCM
Laquelle de ces affirmations est vraie ?
A. Une fonction ne peut pas retourner de valeur
B. Une procédure retourne toujours une valeur
C. Une fonction retourne une valeur
D. Une procédure est appelée dans une expression
22. Vrai ou Faux
Une fonction PL/SQL peut être utilisée dans une requête SQL.
→ Vrai
Marouane RADDAOUI 3A41
SGBD ESPRIT

23. Code à corriger


Corrigez cette fonction erronée :

CREATE FUNCTION double_val(x IN NUMBER)


RETURN x*2;

24. Réponse à trous


Complétez cette déclaration de procédure :

CREATE PROCEDURE affiche_msg(msg IN VARCHAR2)


IS
BEGIN
DBMS_OUTPUT.PUT(____);
END;

26. QCM
Lequel des types suivants est valide pour un paramètre OUT ?
A. VARCHAR2
B. BOOLEAN
C. TABLE
D. CURSOR
27. Vrai ou Faux
Une procédure peut modifier la valeur d’un paramètre OUT.
28. Code à compléter Complétez la fonction qui retourne le carré d’un nombre :

CREATE FUNCTION carre(x IN NUMBER)


RETURN NUMBER
IS
BEGIN
RETURN x * ____;
END;

29. QCM Dans une procédure, que signifie un paramètre IN OUT ?


A. Valeur d’entrée uniquement
B. Valeur de sortie uniquement
C. Paramètre partagé lecture/écriture
D. Aucun
30. Composition (écriture libre) Écrivez une procédure nommée ajouter_salaire qui
prend en paramètre un salaire et l'affiche s’il est supérieur à 2000.

Vous aimerez peut-être aussi