QCM PL/SQL Corrigé – Partie 26
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 fait le code PL/SQL suivant ?
DECLARE v_today DATE; BEGIN v_today := SYSDATE; DBMS_OUTPUT.PUT_LINE('Today\'s date: ' || TO_CHAR(v_today, 'DD-MON-YYYY')); END;
A Il affiche la date du jour dans le format « DD-MON-YYYY ».
B Il génère une erreur car SYSDATE ne peut pas être utilisé de cette manière.
C Il affiche la date de création de la table employees.
D Il affiche l’heure du jour, mais pas la date.
2. Quelle est l’instruction pour afficher un message dans la console PL/SQL ?
A SHOW MESSAGE;
B PRINT
C DBMS_OUTPUT.PUT_LINE;
D OUTPUT MESSAGE;
3. Quelle est la différence entre une « vue » et une « table » en PL/SQL ?
A Une vue ne contient aucune donnée réelle, elle est dynamique.
B Une vue contient des données permanentes, contrairement à une table.
C Une table ne peut être utilisée dans une requête SQL.
D Une vue ne peut être mise à jour, mais une table oui.
4. Que fait le code PL/SQL suivant ?
DECLARE v_name employees.first_name%TYPE; BEGIN SELECT first_name INTO v_name FROM employees WHERE employee_id = 9999; DBMS_OUTPUT.PUT_LINE('Employee Name:' || NVL(v_name, 'Unknown')); END;
A Il affiche le prénom de l’employé avec l’ID 9999 ou « Unknown » si l’employé n’existe pas.
B Il génère une erreur car l’employé avec l’ID 9999 n’est pas trouvé dans la table.
C Il affiche « Employee Name: Unknown » même si l’employé existe.
D Il affiche « Employee Name: NULL » si l’employé n’existe pas.
5. Que fait le code PL/SQL suivant ?
BEGIN INSERT INTO employees (employee_id, first_name, last_name) VALUES (1001, 'John', 'Doe'); EXCEPTION WHEN DUP_VAL_ON_INDEX THEN DBMS_OUTPUT.PUT_LINE('Duplicate value error'); END;
A Il affiche « Duplicate value error » si un doublon d’ID d’employé est détecté.
B Il insère l’employé John Doe dans la table employees, mais génère une erreur pour l’ID 1001.
C Il insère un employé avec l’ID 1001, mais ne génère aucune erreur.
D Il génère une erreur car l’exception DUP_VAL_ON_INDEX ne peut pas être utilisée dans ce cas.
6. Que fait le code PL/SQL suivant ?
BEGIN EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = ''YYYY-MM-DD'''; DBMS_OUTPUT.PUT_LINE('Date format changed'); END;
A Il n’a aucun effet, car le format de la date ne peut pas être modifié.
B Il génère une erreur car la commande ALTER SESSION ne peut pas être utilisée dans un bloc PL/SQL.
C Il change le format de la date pour toutes les sessions de la base de données.
D Il modifie le format de la date pour la session actuelle et affiche « Date format changed ».
7. Quel est l’avantage principal d’utiliser des curseurs en PL/SQL ?
A Ils permettent de traiter des requêtes SQL en masse sans gérer des résultats.
B Ils permettent de gérer un ensemble de lignes de manière itérative dans un bloc PL/SQL.
C Ils optimisent la vitesse de traitement des données.
D Ils n’ont aucun effet sur la gestion des données.
8. Comment définir un type de données personnalisé en PL/SQL ?
A CREATE TYPE
B TYPE <nom> AS <type_de_donnée>
C DEFINE TYPE
D TYPE <nom> IS <type_de_donnée>
9. Que fait le code PL/SQL suivant ?
DECLARE v_value1 INT := 10; v_value2 INT := 10; BEGIN DBMS_OUTPUT.PUT_LINE('Result: ' || NULLIF(v_value1, v_value2)); END;
A Il affiche « Result: NULL ».
B Il affiche « Result: 10 ».
C Il génère une erreur car NULLIF ne peut pas être utilisé avec des entiers.
D Il affiche « Result: 0 ».
10. Que fait le code PL/SQL suivant ?
DECLARE v_date DATE; BEGIN v_date := TO_DATE('2025-03-12', 'YYYY-MM-DD'); DBMS_OUTPUT.PUT_LINE('Formatted Date: ' || TO_CHAR(v_date, 'DD-MON-YYYY')); END;
A Il affiche la date « 12-MAR-2025 ».
B Il génère une erreur car TO_DATE et TO_CHAR ne peuvent pas être utilisés ensemble.
C Il affiche « 2025-03-12 » comme format de date.
D Il affiche une erreur car la date ‘2025-03-12’ ne correspond pas au format.