QCM PL/SQL Corrigé – Partie 10

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 est la différence entre OF column_name et ON table_name dans la syntaxe du trigger ?

A OF column_name spécifie le nom de la colonne qui doit être mise à jour alors que ON table_name spécifie le nom de la table qui est associée au trigger.

B ON table_name spécifie le nom de la colonne qui doit être mise à jour alors que OF column_name spécifie le nom de la table associée au trigger.

C OF column_name spécifie le nom de la colonne qui doit être mise à jour alors que ON table_name spécifie le nom de la table qui est associée au trigger.

D ON table_name spécifie le nom de la colonne qui doit être mise à jour alors que OF column_name spécifie le nom de la table qui est associée au trigger.

A
OF column_name spécifie le nom de la colonne qui doit être mise à jour alors que ON table_name spécifie le nom de la table qui est associée au trigger. Exemple de syntaxe:

CREATE TRIGGER trigger_name
BEFORE UPDATE OF column_name ON table_name
FOR EACH ROW
BEGIN
    -- Logique du trigger ici
END;

Dans cet exemple, le trigger est défini sur table_name, mais il ne sera déclenché que si la colonne column_name est mise à jour.

 

 

2. Quelle fonction PL/SQL permet d’obtenir la date actuelle du système ?

A SYSDATE

B CURRENT_DATE

C GET_DATE

D NOW

A
En PL/SQL, la fonction SYSDATE permet d’obtenir la date et l’heure actuelles du système. Elle renvoie un type de données DATE qui inclut à la fois la date et l’heure. Exemple:

SELECT SYSDATE FROM dual;

 

 

3. Que fait la clause FOR EACH ROW dans la syntaxe des Triggers?

A Un déclencheur au niveau de chaque ligne est spécifié, ce qui signifie que chaque ligne est affectée par ce déclencheur.

B Lorsque l’instruction SQL est exécutée, le déclencheur ne sera exécuté qu’une seule fois, ce qui est appelé un déclencheur au niveau des tables.

C Les deux A et B

D Aucune de ces réponses

C
Dans le cas de FOR EACH ROW:

  • Un déclencheur au niveau de chaque ligne est spécifié, ce qui signifie que chaque ligne est affectée par ce déclencheur.
  • Lorsque l’instruction SQL est exécutée, le déclencheur ne sera exécuté qu’une seule fois, ce qui est appelé un déclencheur au niveau des tables.

Exemple:

CREATE OR REPLACE TRIGGER before_insert_employee
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
    -- Avant l'insertion d'un nouvel employé, définir la date de création
    :NEW.created_at := SYSDATE;
END;
  • Ce trigger est défini sur la table employees et se déclenche avant l’insertion (BEFORE INSERT).
  • Le mot-clé FOR EACH ROW signifie que ce trigger s’exécutera une fois pour chaque ligne insérée.
  • :NEW.created_at fait référence à la nouvelle ligne qui sera insérée, et la valeur de la colonne created_at est automatiquement définie sur la date et l’heure actuelles (SYSDATE).

 

 
 

4. La condition WHEN est valable pour quels triggers?

A Triggers au niveau de table

B Triggers au niveau des lignes du table

C Triggers au niveau des colonnes

D Triggers au niveau de base de données

B
La condition WHEN est valable pour les triggers au niveau de table, spécifiquement lorsqu’on veut spécifier une condition supplémentaire pour qu’un trigger soit déclenché. Exemple:

CREATE OR REPLACE TRIGGER check_salary_update
AFTER UPDATE ON employees
FOR EACH ROW
WHEN (NEW.salary > 50000)  -- Le trigger s'exécutera uniquement si le salaire est supérieur à 50000
BEGIN
    DBMS_OUTPUT.PUT_LINE('Salary updated to more than 50000');
END;

Dans cet exemple, le trigger check_salary_update sera exécuté après une mise à jour sur la table employees, mais uniquement si le nouveau salaire est supérieur à 50 000, grâce à la condition WHEN.

 

 

5. Laquelle des affirmations suivantes est VRAIE ?

A Les déclencheurs de niveau table n’ont pas accès aux références OLD et NEW. Les déclencheurs au niveau des enregistrements utilisent les références OLD et NEW.

B Les déclencheurs de niveau enregistrement n’ont pas accès aux références OLD et NEW. Les déclencheurs de niveau table utilisent des références OLD et NEW.

C Les déclencheurs de niveau table ont accès aux références OLD et NEW.

D Les déclencheurs de niveau enregistrement n’utilisent pas les références OLD et NEW.

C
Les déclencheurs en PL/SQL peuvent être définis à deux niveaux: niveau table et niveau ligne (enregistrement). Voici les caractéristiques de ces deux types:

  • Niveau table: Déclencheur exécuté une fois pour toute l’opération (pas accès à :OLD et :NEW).
  • Niveau ligne: Déclencheur exécuté pour chaque ligne affectée, avec accès à :OLD et :NEW.

 

 

6. Que fait la clause REFERENCING OLD AS o NEW AS n dans un trigger ?

A Cette clause est utilisée pour référencer les anciennes valeurs pour différentes instructions DML.

B Cette clause est utilisée pour référencer les nouvelles valeurs pour différentes instructions DML.

C Les deux A et B.

D Aucune de ces réponses

C
La clause REFERENCING OLD AS o NEW AS n dans un trigger permet de donner des alias aux références :OLD (anciennes valeurs) et :NEW (nouvelles valeurs). Cela permet de les référencer avec des noms différents (ici o pour OLD et n pour NEW) dans le corps du trigger.

  • :OLD représente les anciennes valeurs avant une opération UPDATE ou DELETE.
  • :NEW représente les nouvelles valeurs après une opération INSERT ou UPDATE.

En utilisant REFERENCING OLD AS o NEW AS n, vous pouvez utiliser ‘o’ pour faire référence aux anciennes valeurs et ‘n’ pour faire référence aux nouvelles valeurs dans le trigger.

 

 
 

7. Lequel des points suivants est un avantage du trigger ?

A Auditer

B Imposer des autorisations pour la sécurité

C Garder la trace des événements d’accès aux tables

D Tout ce qui précède

D
Les triggers offrent plusieurs avantages dans une base de données, notamment:

  • A) Auditer : Les triggers peuvent être utilisés pour auditer les modifications apportées aux données (par exemple, enregistrer les changements dans une table de journalisation).
  • B) Imposer des autorisations pour la sécurité : Ils peuvent être utilisés pour ajouter une couche de sécurité supplémentaire, en vérifiant les autorisations avant d’exécuter une opération sur les données.
  • C) Garder la trace des événements d’accès aux tables : Les triggers peuvent aussi suivre les événements d’accès, comme les insertions, mises à jour, et suppressions, et peuvent enregistrer ces événements dans une table de journalisation.

 

 

8. Laquelle des clauses suivantes n’est pas présente dans la syntaxe du trigger ?

A INSTEAD OF

B CURSOR

C TRIGGER

D DECLARE

B
CURSOR n’est pas une clause spécifique dans la syntaxe d’un trigger.

 

 
 

9. Les tables, vues, schémas ou bases de données peuvent être définis comme ________ pour les événements.

A Vues

B Procédure

C Triggers

D Curseurs

C
Les triggers (déclencheurs) sont utilisés pour réagir à des événements spécifiques qui se produisent sur des tables, vues, ou même dans le contexte d’un schéma. Les triggers peuvent être définis pour être exécutés automatiquement lorsqu’un événement DML (comme INSERT, UPDATE, DELETE) se produit sur une table ou une vue.

En résumé, les triggers peuvent être associés à des événements sur des objets tels que des tables, des vues, ou des schémas.

 

 

10. Les erreurs rencontrées pendant l’exécution du programme sont appelées ___________ en PL/SQL.

A FUNCTION

B EXCEPTION

C CURSOR

D PROCEDURE

B
En PL/SQL, les erreurs rencontrées pendant l’exécution du programme sont appelées exceptions. Les exceptions peuvent être des erreurs définies par le système (comme une division par zéro ou une violation de contrainte) ou des exceptions définies par l’utilisateur (créées par le programmeur pour gérer des situations spécifiques).

Lorsque ces erreurs se produisent, elles peuvent être capturées et gérées dans une section EXCEPTION du bloc PL/SQL pour éviter que l’application ne plante.

 

 

Laisser un commentaire

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