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
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.
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.
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.
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.
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;
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.
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
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.
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.