QCM PL/SQL Corrigé – Partie 20
QCM sur PL/SQL avec des réponses pour la préparation des entretiens d’embauche, tests en ligne, examens et certifications. Ces questions et réponses sur PL/SQL comprennent divers sujets tel que les bases de PL/SQL, les variables, les constantes, les boucles, les déclencheurs, les curseurs, les procédures, etc…. Et sont tirés d’un vrai entretien écrit et certaines parties sont en direct. Cette méthode d’apprentissage systématique préparera facilement toute personne pour réussir son test sur PL/SQL.
1. Que permet de faire la commande GRANT
en SQL ?
A Elle permet de créer une nouvelle table dans la base de données.
B Elle permet de supprimer une table de la base de données.
C Elle permet d’attribuer des privilèges d’accès à une table ou à une vue à un utilisateur.
D Elle permet de renommer une table dans la base de données.
2. Quelle est la différence entre CURRVAL
et NEXTVAL
dans le contexte des séquences en PL/SQL ?
A CURRVAL retourne la valeur actuelle de la séquence, tandis que NEXTVAL retourne la valeur suivante.
B CURRVAL retourne la valeur suivante de la séquence, tandis que NEXTVAL retourne la valeur actuelle.
C CURRVAL et NEXTVAL sont des alias pour la même fonction.
D CURRVAL est utilisé pour des séquences ascendantes, tandis que NEXTVAL est utilisé pour des séquences descendantes.
3. Que fait la commande REVOKE
en SQL ?
A Elle permet de supprimer une table de la base de données.
B Elle permet de modifier la structure d’une table.
C Elle permet de retirer des privilèges précédemment accordés à un utilisateur.
D Elle permet de renommer une table.
4. Que fait le code PL/SQL suivant ?
DECLARE v_counter INT := 1; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter); v_counter := v_counter + 1; EXIT WHEN v_counter > 5; END LOOP; END;
A Il affiche les valeurs de v_counter de 1 à 5.
B Il affiche les valeurs de v_counter de 1 à 6.
C Il fait une boucle infinie sans condition d’arrêt.
D Il met fin à la boucle avant d’afficher les valeurs.
5. Que fait le code PL/SQL suivant ?
DECLARE v_age INT := 30; BEGIN IF v_age >= 18 THEN DBMS_OUTPUT.PUT_LINE('Adulte'); ELSE DBMS_OUTPUT.PUT_LINE('Mineur'); END IF; END;
A Il affiche « Adulte » car v_age est supérieur à 18.
B Il affiche « Mineur » car v_age est inférieur à 18.
C Il affiche « Adulte » car v_age est égal à 30.
D Il affiche « Mineur » car v_age est égal à 30.
6. Que fait le code PL/SQL suivant ?
BEGIN UPDATE employees SET salary = salary * 1.1 WHERE department_id = 10; COMMIT; END;
A Il met à jour les salaires des employés du département 10 en augmentant de 10% et valide la transaction.
B Il affiche un message pour tous les employés du département 10.
C Il annule les modifications apportées aux salaires.
D Il insère un nouveau salaire pour les employés du département 10.
7. Que fait le code PL/SQL suivant ?
BEGIN INSERT INTO employees (emp_id, first_name, last_name, department_id) VALUES (1001, 'John', 'Doe', 30); COMMIT; END;
A Il annule l’insertion d’un employé dans la table employees.
B Il met à jour les informations d’un employé existant avec l’ID 1001.
C Il insère plusieurs employés à la fois dans la table employees.
D Il insère un nouvel employé avec l’ID 1001, le prénom « John », le nom « Doe » et le département 30 dans la table employees.
8. Que fait le code PL/SQL suivant ?
BEGIN DECLARE v_salary employees.salary%TYPE; BEGIN SELECT salary INTO v_salary FROM employees WHERE employee_id = 1001; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Employé non trouvé'); END; END;
A Il récupère les salaires de tous les employés.
B Il provoque une erreur si l’employé n’existe pas.
C Il affiche le salaire de l’employé avec l’ID 1001, ou un message d’erreur si l’employé n’est pas trouvé.
D Il affiche un message d’erreur sans capturer les exceptions.
9. Que fait le code PL/SQL suivant ?
BEGIN UPDATE employees SET salary = salary + 500 WHERE department_id = 20; ROLLBACK; END;
A Il met à jour les salaires des employés du département 20, puis annule toutes les modifications.
B Il augmente les salaires des employés du département 20 de 500, puis valide les changements.
C Il ne fait aucune modification sur la table employees.
D Il affiche un message pour chaque employé du département 20.
10. Que fait le code PL/SQL suivant ?
DECLARE CURSOR emp_cursor IS SELECT employee_id, first_name FROM employees WHERE department_id = 10; v_emp_id employees.employee_id%TYPE; v_emp_name employees.first_name%TYPE; BEGIN OPEN emp_cursor; FETCH emp_cursor INTO v_emp_id, v_emp_name; CLOSE emp_cursor; DBMS_OUTPUT.PUT_LINE('Employé ID: ' || v_emp_id || ', Nom: ' || v_emp_name); END;
A Il affiche les informations du premier employé du département 10.
B Il affiche les informations de tous les employés du département 10.
C Il ferme immédiatement le curseur sans récupérer les données.
D Il effectue une mise à jour sur les employés du département 10.