QCM PL/SQL Corrigé – Partie 22

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. Quelle est la syntaxe correcte pour créer une procédure en PL/SQL ?

A

CREATE PROCEDURE procedure_name IS
BEGIN
  -- instructions
END;

B

PROCEDURE procedure_name IS
BEGIN
  -- instructions
END procedure_name;

C

CREATE PROCEDURE procedure_name AS
BEGIN
  -- instructions
END;

D

CREATE PROCEDURE procedure_name PROCEDURE
BEGIN
  -- instructions
END;
C
La syntaxe correcte pour créer une procédure en PL/SQL est CREATE PROCEDURE suivie du nom de la procédure et des instructions dans le bloc BEGIN ... END;. L’option A est incorrecte car elle omet le mot-clé AS après le nom de la procédure. L’option B est incorrecte car il n’est pas nécessaire de répéter le nom de la procédure dans END. L’option D est incorrecte, car le mot-clé PROCEDURE n’est pas nécessaire dans la déclaration.

 

 

2. Quel est le rôle du mot-clé DEFAULT dans la déclaration d’une variable en PL/SQL ?

A Il permet d’assigner une valeur par défaut à la variable lorsqu’aucune valeur n’est fournie.

B Il permet de forcer la valeur d’une variable à être null.

C Il définit la variable comme étant obligatoire dans un bloc PL/SQL.

D Il indique que la variable peut être utilisée dans des requêtes SQL.

A
Le mot-clé DEFAULT est utilisé pour assigner une valeur par défaut à une variable dans une déclaration PL/SQL. Par exemple:

DECLARE
  my_var NUMBER DEFAULT 100;
BEGIN
  -- instructions
END;

Si aucune valeur n’est assignée à my_var, elle prendra automatiquement la valeur 100.

 

 

3. Que fait le code PL/SQL suivant ?
CREATE OR REPLACE PROCEDURE increase_salary(p_emp_id INT, p_percentage FLOAT) IS
BEGIN
   UPDATE employees
   SET salary = salary + (salary * p_percentage / 100)
   WHERE employee_id = p_emp_id;
   COMMIT;
END;

A Cette procédure supprime un employé de la table employees.

B Cette procédure crée un nouvel employé avec un salaire basé sur le pourcentage donné.

C Cette procédure modifie les salaires de tous les employés d’un pourcentage donné.

D Cette procédure augmente le salaire d’un employé donné en fonction du pourcentage spécifié.

D
Cette procédure increase_salary prend un ID d’employé (p_emp_id) et un pourcentage (p_percentage). Elle met à jour le salaire de l’employé spécifié en augmentant son salaire de ce pourcentage. Enfin, elle valide la transaction avec COMMIT.

 

 
 

4. Quelle instruction permet de commencer une transaction dans PL/SQL ?

A START TRANSACTION

B BEGIN TRANSACTION

C BEGIN

D OPEN TRANSACTION

C
En PL/SQL, une transaction commence dès que vous commencez à exécuter une série d’instructions dans un bloc BEGIN ... END;. Aucune commande spécifique n’est nécessaire pour démarrer une transaction, elle commence implicitement à partir du moment où le bloc BEGIN est exécuté. Les instructions START TRANSACTION et BEGIN TRANSACTION sont utilisées dans d’autres systèmes de gestion de base de données (SGBD), mais pas en PL/SQL. L’option D est incorrecte, car OPEN est utilisé pour ouvrir des curseurs, pas des transactions.

 

 

5. Quelle est la différence entre RAISE et RAISE_APPLICATION_ERROR dans PL/SQL ?

A RAISE est utilisé pour lever une exception définie par l’utilisateur, tandis que RAISE_APPLICATION_ERROR lève une exception système.

B RAISE est utilisé pour lever une exception système, tandis que RAISE_APPLICATION_ERROR lève une exception définie par l’utilisateur.

C RAISE permet de lever une exception avec un code d’erreur spécifique, tandis que RAISE_APPLICATION_ERROR est utilisé pour signaler une erreur utilisateur avec un message personnalisé.

D RAISE est utilisé pour générer une erreur SQL, tandis que RAISE_APPLICATION_ERROR est utilisé pour générer des erreurs d’exécution.

C
RAISE est utilisé pour lever une exception (soit préexistante, soit définie par l’utilisateur), tandis que RAISE_APPLICATION_ERROR permet de lever une exception personnalisée avec un code d’erreur et un message personnalisés. Par exemple, RAISE_APPLICATION_ERROR(-20001, 'Erreur personnalisée'); lève une exception avec un numéro et un message que l’on définit.

 

 

6. Que fait le code PL/SQL suivant ?
DECLARE
   v_counter INT := 1;
BEGIN
   FOR i IN 1..3 LOOP
      DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
      v_counter := v_counter + 1;
   END LOOP;
END;

A Il affiche « Counter: 1 », « Counter: 2 », « Counter: 3 », en incrémentant v_counter à chaque itération.

B Il affiche « Counter: 1 » trois fois sans incrémenter v_counter.

C Il affiche « Counter: 1 », « Counter: 2 », « Counter: 3 », mais sans utiliser la variable v_counter.

D Il génère une erreur car v_counter n’est pas mis à jour.

A
Le code utilise une boucle FOR pour itérer trois fois, chaque fois affichant la valeur de v_counter. À chaque itération, la valeur de v_counter est incrémentée de 1.

 

 
 

7. Quelle instruction est utilisée pour déclarer une variable de type BOOLEAN dans PL/SQL ?

A BOOLEAN <nom_variable>;

B DECLARE <nom_variable> BOOLEAN;

C BOOLEAN : <nom_variable>;

D DECLARE <nom_variable> AS BOOLEAN;

B
En PL/SQL, pour déclarer une variable de type BOOLEAN, vous utilisez la syntaxe DECLARE <nom_variable> BOOLEAN;. Le type BOOLEAN accepte les valeurs TRUE, FALSE ou NULL.

 

 

8. Que fait le code PL/SQL suivant ?
BEGIN
   DELETE FROM employees WHERE department_id = 20;
   COMMIT;
END;

A Il supprime tous les employés du département 20 et valide la transaction.

B Il met à jour les informations des employés du département 20.

C Il insère de nouveaux employés dans le département 20.

D Il sélectionne les employés du département 20 sans les supprimer.

A
La commande DELETE supprime toutes les lignes de la table employees où le department_id est égal à 20. La commande COMMIT valide cette suppression, ce qui la rend permanente dans la base de données.

 

 

9. 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 = 1002;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         DBMS_OUTPUT.PUT_LINE('Aucun employé trouvé');
   END;
END;

A Il récupère le salaire de l’employé avec l’ID 1002, ou affiche un message d’erreur si aucun employé n’est trouvé.

B Il génère une erreur si aucun employé avec l’ID 1002 n’est trouvé.

C Il affiche le salaire de l’employé avec l’ID 1002.

D Il ne récupère pas le salaire, mais affiche un message d’erreur.

A
Ce code utilise un bloc EXCEPTION pour gérer le cas où aucun employé avec l’ID 1002 n’est trouvé dans la table. Si aucun employé n’est trouvé, l’exception NO_DATA_FOUND est capturée et le message « Aucun employé trouvé » est affiché.

 

 
 

10. Quelle est la commande pour récupérer une valeur de retour d’une fonction dans une variable en PL/SQL ?

A SELECT INTO

B FETCH INTO

C RETURN INTO

D := (opérateur d’affectation)

D
En PL/SQL, l’opérateur d’affectation := est utilisé pour affecter la valeur retournée par une fonction à une variable. Par exemple, si une fonction retourne une valeur, vous pouvez la récupérer comme suit :

result := ma_fonction();

 

 

Laisser un commentaire

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