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
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;
BREAK;
B
RETURN;
RETURN;
C
GOTO;
GO TO;
D
EXIT;
EXIT;
D
L’instruction
EXIT;
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
CREATEEXCEPTION
CREATE EXCEPTION
B
EXCEPTIONNAME
EXCEPTION NAME
C
DECLAREEXCEPTION
DECLARE EXCEPTION
D
PRAGMA EXCEPTION_INIT
PRAGMA EXCEPTION_INIT
C
Pour créer une exception personnalisée en PL/SQL, on utilise la syntaxe
DECLARE
DECLARE pour déclarer l’exception au début du bloc PL/SQL. Par exemple :
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DECLARE
e_custom_exception EXCEPTION;
BEGIN
-- code
RAISE e_custom_exception;
EXCEPTION
WHEN e_custom_exception THEN
-- gestion de l'exception
END;
DECLARE
e_custom_exception EXCEPTION;
BEGIN
-- code
RAISE e_custom_exception;
EXCEPTION
WHEN e_custom_exception THEN
-- gestion de l'exception
END;
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 ?
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DECLARE
v_name VARCHAR2(50) := NULL;
BEGIN
IF v_name IS NULLTHEN
DBMS_OUTPUT.PUT_LINE('Name is NULL');
ELSE
DBMS_OUTPUT.PUT_LINE('Name is not NULL');
ENDIF;
END;
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;
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
IS NULL. Puisque la variable est effectivement NULL, le message « Name is NULL » est affiché.
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;
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
FORLOOP
FOR LOOP. À chaque itération, les informations de chaque employé sont récupérées et affichées.