QCM PL/SQL Corrigé – Partie 24

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 instruction PL/SQL est utilisée pour récupérer des données d’une table dans une variable à l’aide d’un curseur explicite ?

A OPEN ... FETCH ... CLOSE

B SELECT INTO

C OPEN ... LOOP ... CLOSE

D FETCH INTO

A
Pour récupérer des données à l’aide d’un curseur explicite, on utilise la combinaison de trois instructions: OPEN pour ouvrir le curseur, FETCH pour récupérer les données ligne par ligne, et CLOSE pour fermer le curseur une fois que les données ont été traitées.

 

 

2. Quelle est la fonction du mot-clé IS dans la déclaration d’une procédure ou d’une fonction en PL/SQL ?

A Il indique que la procédure ou la fonction est publique et peut être utilisée dans d’autres programmes.

B Il marque la fin du corps de la procédure ou de la fonction.

C Il est utilisé pour définir le corps de la procédure ou de la fonction.

D Il est utilisé pour séparer les paramètres d’entrée et de sortie dans la déclaration de la fonction.

C
Le mot-clé IS est utilisé en PL/SQL pour marquer le début du corps d’une procédure ou d’une fonction après la déclaration de ses paramètres. Par exemple, dans une procédure:

CREATE PROCEDURE my_proc IS
BEGIN
  -- instructions
END;

 

 

3. Que fait le code PL/SQL suivant ?
BEGIN
   DECLARE
      v_salary employees.salary%TYPE;
   BEGIN
      SELECT salary INTO v_salary FROM employees WHERE emp_id = 1003;
   EXCEPTION
      WHEN TOO_MANY_ROWS THEN
         DBMS_OUTPUT.PUT_LINE('Trop de résultats pour cet employé');
   END;
END;

A Il affiche « Trop de résultats pour cet employé » si plus d’une ligne est retournée pour l’employé avec l’ID 1003.

B Il récupère le salaire de l’employé avec l’ID 1003 ou génère une erreur si l’employé n’est pas trouvé.

C Il affiche « Trop de résultats pour cet employé » si aucun employé n’est trouvé avec l’ID 1003.

D Il génère une erreur car l’exception TOO_MANY_ROWS n’est pas définie correctement.

A
L’exception TOO_MANY_ROWS est levée si la requête retourne plus d’une ligne. Dans ce cas, le message « Trop de résultats pour cet employé » est affiché.

 

 
 

4. Que fait le code PL/SQL suivant ?
DECLARE
   v_employee_name employees.first_name%TYPE;
BEGIN
   SELECT first_name INTO v_employee_name FROM employees WHERE emp_id = 9;
   DBMS_OUTPUT.PUT_LINE('Employee name: ' || v_employee_name);
END;

A Il met à jour le prénom de l’employé avec l’ID 9.

B Il supprime l’employé avec l’ID 9 de la table employees.

C Il récupère tous les prénoms des employés et les affiche.

D Il récupère le prénom de l’employé avec l’ID 9 et l’affiche.

D
Le code utilise SELECT INTO pour récupérer le prénom de l’employé avec l’ID 9 et le stocker dans la variable v_employee_name. Ensuite, le prénom est affiché à l’aide de DBMS_OUTPUT.PUT_LINE.

 

 

5. Quelle est la différence entre IS NULL et = NULL dans une condition SQL en PL/SQL ?

A IS NULL vérifie une égalité stricte, tandis que = NULL est utilisé pour vérifier une condition logique.

B = NULL est correct pour les tests de NULL, tandis que IS NULL ne fonctionne pas.

C = NULL vérifie si une variable contient une valeur vide, tandis que IS NULL vérifie une égalité logique.

D IS NULL est utilisé pour vérifier si une variable a une valeur NULL, tandis que = NULL génère une erreur.

D
En SQL et PL/SQL, IS NULL est la syntaxe correcte pour tester si une valeur est NULL. Par exemple:

IF var IS NULL THEN
  -- instructions
END IF;

L’utilisation de = NULL dans une condition génère une erreur, car NULL ne peut pas être comparé à une valeur avec l’opérateur =. Il est nécessaire d’utiliser IS NULL pour cette comparaison.

 

 

6. Quelle est la syntaxe correcte pour déclarer un type de table imbriquée dans PL/SQL ?

A TYPE table_type IS TABLE OF VARCHAR2(50);

B TYPE table_type IS TABLE OF VARCHAR2(50) INDEX BY PLS_INTEGER;

C TYPE table_type IS TABLE OF VARCHAR2(50) OF INDEX PLS_INTEGER;

D TYPE table_type IS TABLE OF VARCHAR2(50) NESTED BY PLS_INTEGER;

A
La syntaxe correcte pour déclarer un type de table imbriquée est d’utiliser TYPE table_type IS TABLE OF <type_donnée>. Cette structure permet de définir un tableau dynamique de type variable.

 

 
 

7. Que signifie l’erreur TOO_MANY_ROWS en PL/SQL ?

A Il y a eu une tentative de mise à jour de plusieurs lignes qui ne sont pas autorisées.

B La requête SQL a renvoyé trop de résultats pour être traitée par la variable de réception.

C La table contient trop de données pour être manipulée par PL/SQL.

D Une erreur de syntaxe a été rencontrée lors de l’exécution de la requête.

B
L’exception TOO_MANY_ROWS est levée lorsqu’une requête SELECT INTO retourne plus d’une ligne, alors qu’une seule ligne est attendue. Par exemple, si une requête SELECT INTO est censée renvoyer une seule ligne mais en renvoie plusieurs, cette erreur se produit.

 

 

8. Quelle instruction est utilisée pour ouvrir un curseur dynamique dans PL/SQL ?

A OPEN FOR

B OPEN CURSOR

C OPEN dynamic_cursor FOR

D OPEN FOR dynamic_cursor

C
Pour ouvrir un curseur dynamique en PL/SQL, on utilise l’instruction OPEN dynamic_cursor FOR suivie d’une requête dynamique sous forme de chaîne de caractères. Cela permet d’exécuter une requête qui peut être construite dynamiquement à l’exécution. Par exemple :

OPEN dynamic_cursor FOR 'SELECT * FROM employees WHERE department_id = :dept_id' USING dept_id;

 

 

9. 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 Counter de 1 à 5.

B Il affiche les valeurs de Counter de 1 à 6.

C Il génère une erreur à cause de la condition EXIT WHEN.

D Il n’affiche rien.

A
Le code utilise une boucle LOOP avec la condition EXIT WHEN pour sortir de la boucle lorsque la valeur de v_counter dépasse 5. Cela permet d’afficher les valeurs de Counter de 1 à 5.

 

 
 

10. Que fait le code PL/SQL suivant ?
DECLARE
   v_number INT := 17;
BEGIN
   IF MOD(v_number, 2) = 0 THEN
      DBMS_OUTPUT.PUT_LINE('Pair');
   ELSE
      DBMS_OUTPUT.PUT_LINE('Impair');
   END IF;
END;

A Il affiche « Pair » car 17 est divisible par 2.

B Il affiche « Impair » car 17 n’est pas divisible par 2.

C Il génère une erreur de syntaxe.

D Il ne fait rien car la fonction MOD est mal utilisée.

B
La fonction MOD renvoie le reste de la division de v_number par 2. Puisque le reste de 17 divisé par 2 est 1, la condition dans le IF est fausse, et « Impair » est affiché.

 

 

Laisser un commentaire

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