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é.
2. Quelle instruction permet de quitter un bloc PL/SQL de façon anticipée ?
A BREAK;
B RETURN;
C GO TO;
D EXIT;
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
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.
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é.
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! ».
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;
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';
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.
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.