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

B

RETURN;
RETURN;

C

GO TO;
GO TO;

D

EXIT;
EXIT;

 

3. Quelle instruction est utilisée pour créer une exception personnalisée dans PL/SQL ?

A

CREATE EXCEPTION
CREATE EXCEPTION

B

EXCEPTION NAME
EXCEPTION NAME

C

DECLARE EXCEPTION
DECLARE EXCEPTION

D

PRAGMA EXCEPTION_INIT
PRAGMA EXCEPTION_INIT

 
 

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 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;
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 ?
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
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;
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 ?
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DECLARE
v_text VARCHAR2(50) := 'Hello World!';
BEGIN
v_text := REPLACE(v_text, 'World', 'PL/SQL');
DBMS_OUTPUT.PUT_LINE(v_text);
END;
DECLARE v_text VARCHAR2(50) := 'Hello World!'; BEGIN v_text := REPLACE(v_text, 'World', 'PL/SQL'); DBMS_OUTPUT.PUT_LINE(v_text); END;
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;
SEQUENCE var_name;

B

var_name SEQUENCE;
var_name SEQUENCE;

C

var_name NUMBER := SEQUENCE.nextval;
var_name NUMBER := SEQUENCE.nextval;

D

NUMBER var_name SEQUENCE.nextval;
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';
EXECUTE IMMEDIATE 'SELECT * FROM table';

B

RUN SQL 'SELECT * FROM table';
RUN SQL 'SELECT * FROM table';

C

EXECUTE 'SELECT * FROM table';
EXECUTE 'SELECT * FROM table';

D

RUN IMMEDIATE SQL 'SELECT * FROM table';
RUN IMMEDIATE SQL 'SELECT * FROM table';

 

9. Que fait le code PL/SQL suivant ?
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
BEGIN
TRUNCATE TABLE employees;
COMMIT;
END;
BEGIN TRUNCATE TABLE employees; COMMIT; END;
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 ?
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
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.

 

Laisser un commentaire

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