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.

C
GRANT permet d’attribuer des privilèges (tels que SELECT, INSERT, UPDATE, etc.) à un utilisateur sur une table, une vue ou une séquence. Exemple :

GRANT SELECT, INSERT ON employees TO john;

Cela donne à l’utilisateur john les privilèges SELECT et INSERT sur la table employees.

 

 

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.

A
  • NEXTVAL génère le prochain numéro dans la séquence.
  • CURRVAL retourne la dernière valeur générée par NEXTVAL dans la session actuelle. Exemple :
SELECT employees_seq.NEXTVAL FROM dual;
SELECT employees_seq.CURRVAL FROM dual;

La première requête renverra la prochaine valeur de la séquence, et la deuxième renverra la valeur courante.

 

 

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.

C
REVOKE permet de retirer des privilèges d’accès à une table ou à une vue. Exemple :

REVOKE SELECT, INSERT ON employees FROM john;

Cela retire les privilèges SELECT et INSERT sur la table employees de l’utilisateur john.

 

 
 

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.

A
Ce code utilise une boucle LOOP pour afficher les valeurs de la variable v_counter de 1 à 5, puis sort de la boucle lorsque la condition v_counter > 5 est vraie grâce au EXIT WHEN.

 

 

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.

A
Ce code utilise une structure IF-THEN pour vérifier si la variable v_age est supérieure ou égale à 18. Dans ce cas, il affiche « Adulte » puisque v_age vaut 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.

A
Ce code effectue une mise à jour sur la table employees, augmentant les salaires de 10% pour les employés du département 10. La commande COMMIT valide la transaction et rend ces modifications permanentes.

 

 
 

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.

D
Le code utilise la commande INSERT INTO pour ajouter un nouvel enregistrement dans la table employees avec les informations spécifiées. La commande COMMIT valide l’insertion dans la base de données.

 

 

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.

C
Ce code utilise un bloc EXCEPTION pour gérer l’exception NO_DATA_FOUND si aucun employé n’est trouvé avec l’ID 1001. Si l’employé n’est pas trouvé, il affiche « Employé non trouvé ».

 

 

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.

A
Ce code effectue une mise à jour sur les salaires des employés du département 20 en augmentant leur salaire de 500, puis annule cette modification avec ROLLBACK. Cela empêche que les changements soient enregistrés définitivement dans la base de données.

 

 
 

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.

A
Ce code utilise un curseur pour récupérer les informations d’un employé du département 10. Le curseur est ouvert, les données du premier employé sont extraites avec FETCH, puis le curseur est fermé. Enfin, les informations de cet employé sont affichées.

 

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *