QCM PL/SQL Corrigé – Partie 25

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. Comment gérer une erreur d’exécution dans un bloc PL/SQL si celle-ci n’a pas de gestionnaire d’exception défini ?

A L’exécution du bloc PL/SQL se termine sans afficher d’erreur.

B Une exception de type OTHERS est levée par défaut.

C La transaction est automatiquement annulée.

D Une erreur système est générée et le programme est arrêté.

D
Si une erreur d’exécution se produit dans un bloc PL/SQL sans gestionnaire d’exception correspondant, l’exception par défaut (OTHERS) sera levée. Si cette exception n’est pas capturée, une erreur système est générée et l’exécution du programme est arrêtée.

 

 

2. Quelle instruction permet de quitter un bloc PL/SQL de façon anticipée ?

A BREAK;

B RETURN;

C GO TO;

D EXIT;

D
L’instruction EXIT; permet de sortir immédiatement d’une boucle ou d’un bloc PL/SQL. Cette instruction peut être utilisée pour sortir d’une boucle FOR, WHILE, ou même pour quitter un bloc lorsque certaines conditions sont remplies.

 

 

3. Quelle instruction est utilisée pour créer une exception personnalisée dans PL/SQL ?

A CREATE EXCEPTION

B EXCEPTION NAME

C DECLARE EXCEPTION

D PRAGMA EXCEPTION_INIT

C
Pour créer une exception personnalisée en PL/SQL, on utilise la syntaxe DECLARE pour déclarer l’exception au début du bloc PL/SQL. Par exemple :

DECLARE
  e_custom_exception EXCEPTION;
BEGIN
  -- code
  RAISE e_custom_exception;
EXCEPTION
  WHEN e_custom_exception THEN
    -- gestion de l'exception
END;

 

 
 

4. Que fait le code PL/SQL suivant ?
DECLARE
   v_name VARCHAR2(50) := NULL;
BEGIN
   IF v_name IS NULL THEN
      DBMS_OUTPUT.PUT_LINE('Name is NULL');
   ELSE
      DBMS_OUTPUT.PUT_LINE('Name is not NULL');
   END IF;
END;

A Il affiche « Name is NULL » car la variable v_name est initialisée avec NULL.

B Il affiche « Name is not NULL » car v_name est une chaîne vide.

C Il génère une erreur à cause de l’utilisation de NULL.

D Il ne fait rien.

A
Le code vérifie si la variable v_name est NULL en utilisant la condition IS NULL. Puisque la variable est effectivement NULL, le message « Name is NULL » est affiché.

 

 

5. Que fait le code PL/SQL suivant ?
DECLARE
   v_salary employees.salary%TYPE;
BEGIN
   UPDATE employees
   SET salary = salary + 500
   WHERE employee_id = 1002
   RETURNING salary INTO v_salary;
   DBMS_OUTPUT.PUT_LINE('Updated Salary: ' || v_salary);
END;

A Il met à jour le salaire de l’employé avec l’ID 1002 et affiche le nouveau salaire.

B Il affiche une erreur car la clause RETURNING INTO ne peut pas être utilisée dans ce cas.

C Il met à jour le salaire de tous les employés et affiche le salaire du premier employé.

D Il génère une erreur car le champ salary ne peut pas être modifié.

A
Le code met à jour le salaire de l’employé avec l’ID 1002 en ajoutant 500 et utilise RETURNING INTO pour récupérer le nouveau salaire dans la variable v_salary, qu’il affiche ensuite.

 

 

6. Que fait le code PL/SQL suivant ?
DECLARE
   v_text VARCHAR2(50) := 'Hello World!';
BEGIN
   v_text := REPLACE(v_text, 'World', 'PL/SQL');
   DBMS_OUTPUT.PUT_LINE(v_text);
END;

A Il ne fait rien car le texte ne contient pas « World ».

B Il affiche « World » sans aucune modification.

C Il génère une erreur car REPLACE n’est pas une fonction valide.

D Il remplace « World » par « PL/SQL » dans la variable v_text et affiche « Hello PL/SQL! ».

D
La fonction REPLACE remplace une sous-chaîne spécifiée (ici « World ») par une autre (ici « PL/SQL »). Le texte résultant est affiché : « Hello PL/SQL! ».

 

 
 

7. Comment déclarer une variable dans PL/SQL qui stocke une séquence numérique auto-incrémentée ?

A SEQUENCE var_name;

B var_name SEQUENCE;

C var_name NUMBER := SEQUENCE.nextval;

D NUMBER var_name SEQUENCE.nextval;

C
En PL/SQL, pour récupérer la valeur suivante d’une séquence, vous utilisez la syntaxe SEQUENCE.nextval. Par exemple:

DECLARE
  var_name NUMBER := my_sequence.nextval;
BEGIN
  -- code
END;

Cela récupère la prochaine valeur de la séquence my_sequence et l’assigne à la variable var_name.

 

 

8. Quelle est la syntaxe pour exécuter une requête SQL dynamique dans PL/SQL ?

A EXECUTE IMMEDIATE 'SELECT * FROM table';

B RUN SQL 'SELECT * FROM table';

C EXECUTE 'SELECT * FROM table';

D RUN IMMEDIATE SQL 'SELECT * FROM table';

A
La syntaxe correcte pour exécuter une requête SQL dynamique dans PL/SQL est EXECUTE IMMEDIATE, suivie de la chaîne SQL. Cela permet d’exécuter une requête construite dynamiquement à l’exécution. Par exemple:

EXECUTE IMMEDIATE 'SELECT * FROM employees WHERE department_id = :dept_id' USING dept_id;

 

 

9. Que fait le code PL/SQL suivant ?
BEGIN
   TRUNCATE TABLE employees;
   COMMIT;
END;

A Il supprime toutes les lignes de la table employees de façon définitive.

B Il vide la table employees sans enregistrer les modifications dans la base de données.

C Il génère une erreur car la commande TRUNCATE ne peut pas être utilisée avec COMMIT.

D Il met à jour tous les employés de la table employees.

A
La commande TRUNCATE supprime toutes les lignes d’une table et libère l’espace occupé. Le COMMIT valide la transaction, assurant que l’opération est irréversible.

 

 
 

10. Que fait le code PL/SQL suivant ?
DECLARE
   CURSOR emp_cursor IS
      SELECT employee_id, first_name, last_name FROM employees;
BEGIN
   FOR v_employee IN emp_cursor LOOP
      DBMS_OUTPUT.PUT_LINE('Employee: ' || v_employee.first_name || ' ' || v_employee.last_name);
   END LOOP;
END;

A Il parcourt tous les employés de la table employees et affiche leur prénom et nom.

B Il génère une erreur car la syntaxe de la boucle FOR est incorrecte.

C Il affiche uniquement les noms des employés.

D Il met à jour les informations des employés.

A
Le code utilise un curseur implicite dans un FOR LOOP. À chaque itération, les informations de chaque employé sont récupérées et affichées.

 

 

Laisser un commentaire

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