65 Questions et réponses d'entretien PL/SQL (2024)
Questions et réponses d'entretien PL/SQL pour les débutants
1) Qu’est-ce que PLSQL ?
Oracle PL/SQL est une extension du langage SQL qui combine la puissance de manipulation de données de SQL avec la puissance de traitement du langage procédural pour créer des requêtes SQL super puissantes. PL/SQL garantit un traitement transparent des instructions SQL en améliorant la sécurité, la portabilité et la robustesse de la base de données.
PL/SQL signifie « Extensions du langage procédural au langage de requête structuré ».
👉 Téléchargement PDF gratuit : questions et réponses d'entretien PL/SQL
2) Faites la différence entre % ROWTYPE et TYPE RECORD.
% TYPE DE LIGNE est utilisé lorsqu'une requête renvoie une ligne entière d'une table ou d'une vue.
TYPE D'ENREGISTREMENT d'autre part, est utilisé lorsqu'une requête renvoie une colonne de différentes tables ou vues.
Par exemple. TYPE r_emp est RECORD (sno smp.smpno%type,sname smp sname %type)
e_rec smp%Type de ligne
Le curseur c1 est sélectionné smpno,dept from smp ;
e_rec c1 %Type de ligne
3) Expliquer les utilisations du curseur.
Le curseur est une zone privée nommée dans SQL à partir de laquelle les informations sont accessibles. Ils doivent traiter chaque ligne individuellement pour les requêtes qui renvoient plusieurs lignes.
4) Afficher le code d'un curseur pour la boucle.
Le curseur déclare implicitement %ROWTYPE comme index de boucle. Il ouvre ensuite un curseur, récupère les lignes de valeurs de l'ensemble actif dans les champs de l'enregistrement et se ferme lorsque tous les enregistrements sont traités.
Par exemple.
FOR smp_rec IN C1 LOOP totalsal=totalsal+smp_recsal; ENDLOOP;
5) Expliquez les utilisations du déclencheur de base de données.
Une unité de programme PL/SQL associée à une table de base de données particulière est appelée déclencheur de base de données. Il est utilisé pour :
1) Modifications des données d’audit.
2) Enregistrez les événements de manière transparente.
3) Appliquer des règles métier complexes.
4) Conserver les tables de répliques
5) Dériver les valeurs des colonnes
6) Mettre en œuvre des autorisations de sécurité complexes
6) Quels sont les deux types d’exceptions.
La partie de gestion des erreurs du bloc PL/SQL est appelée Exception. Ils ont deux types : user_defined et prédéfini.
7) Afficher quelques exceptions prédéfinies.
DUP_VAL_ON_INDEX
ZERO_DIVIDE
AUCUNE DONNÉE DISPONIBLE
TOO_MANY_ROWS
CURSOR_ALREADY_OPEN
NUMÉRO INVALIDE
INVALID_CURSOR
PROGRAMME_ERREUR
DÉLAI _ON_RESOURCE
STORAGE_ERROR
CONNEXION REFUSÉE
VALUE_ERROR
et ainsi de suite
8) Expliquez Raise_application_error.
Il s'agit d'une procédure du package DBMS_STANDARD qui permet d'émettre des messages d'erreur définis par l'utilisateur à partir d'un déclencheur de base de données ou d'un sous-programme stocké.
9) Montrez comment les fonctions et les procédures sont appelées dans un bloc PL SQL.
La fonction est appelée dans le cadre d’une expression.
total:=calculate_sal('b644')
La procédure est appelée comme une instruction dans PL / SQL.
calculate_bonus('b644');
10) Expliquez deux tables virtuelles disponibles au moment de l'exécution du déclencheur de base de données.
Les colonnes du tableau sont appelées OLD.column_name et NEW.column_name.
Pour les déclencheurs liés à INSERT, les valeurs NEW.column_name sont disponibles uniquement.
Pour les déclencheurs liés à DELETE, les valeurs OLD.column_name sont disponibles uniquement.
Pour les déclencheurs liés à UPDATE, les deux colonnes Table sont disponibles.
11) Quelles sont les règles à appliquer aux NULL lors des comparaisons ?
1) NULL n'est jamais VRAI ou FAUX
2) NULL ne peut pas être égal ou inégal aux autres valeurs
3) Si une valeur dans une expression est NULL, alors l'expression elle-même est évaluée à NULL, à l'exception de l'opérateur de concaténation (||)
12) Comment est compilé un processus de PL SQL ?
Le processus de compilation comprend les processus de vérification de la syntaxe, de liaison et de génération de code p.
La vérification de la syntaxe vérifie les codes PL SQL pour les erreurs de compilation. Lorsque toutes les erreurs sont corrigées, une adresse de stockage est attribuée aux variables contenant des données. C'est ce qu'on appelle la liaison. Le P-code est une liste d'instructions pour le moteur PL SQL. Le code P est stocké dans la base de données pour les blocs nommés et est utilisé lors de sa prochaine exécution.
13) Faites la différence entre les erreurs de syntaxe et d’exécution.
Une erreur de syntaxe peut être facilement détectée par un compilateur PL/SQL. Par exemple, une orthographe incorrecte.
Une erreur d'exécution est gérée à l'aide de la section de gestion des exceptions dans un Bloc PL/SQL. Par exemple, l'instruction SELECT INTO, qui ne renvoie aucune ligne.
14) Expliquez Commit, Rollback et Savepoint.
Pour une instruction COMMIT, ce qui suit est vrai :
- Les autres utilisateurs peuvent voir les modifications de données apportées par la transaction.
- Les verrous acquis par la transaction sont libérés.
- Le travail effectué par la transaction devient permanent.
Une instruction ROLLBACK est émise à la fin de la transaction, et ce qui suit est vrai.
- Le travail effectué lors d'une transition est annulé comme s'il n'avait jamais été publié.
- Tous les verrous acquis par transaction sont libérés.
Il annule tout le travail effectué par l'utilisateur dans une transaction. Avec SAVEPOINT, seule une partie de la transaction peut être annulée.
15) Définir les curseurs implicites et explicites.
Un curseur est implicite par défaut. L'utilisateur ne peut pas contrôler ou traiter les informations contenues dans ce curseur.
Si une requête renvoie plusieurs lignes de données, le programme définit un curseur explicite. Cela permet à l'application de traiter chaque ligne séquentiellement au fur et à mesure que le curseur la renvoie.
16) Expliquez l’erreur de la table de mutation.
Cela se produit lorsqu'un déclencheur tente de mettre à jour une ligne qu'il utilise actuellement. Il est corrigé à l'aide de vues ou de tables temporaires, de sorte que la base de données sélectionne l'une et met à jour l'autre.
17) Quand une déclaration de déclaration est-elle requise ?
L'instruction DECLARE est utilisée par les blocs anonymes PL SQL, par exemple avec des procédures autonomes non stockées. S'il est utilisé, il doit apparaître en premier dans un fichier autonome.
18) Combien de déclencheurs peuvent être appliqués à une table ?
Un maximum de 12 déclencheurs peuvent être appliqués à une table.
19) Quelle est l'importance de SQLCODE et SQLERRM ?
SQLCODE renvoie la valeur du numéro d'erreur pour la dernière erreur rencontrée tandis que SQLERRM renvoie le message pour la dernière erreur.
20) Si un curseur est ouvert, comment peut-on le retrouver dans un bloc PL SQL ?
la variable d'état du curseur %ISOPEN peut être utilisée.
Questions d'entretien PL/SQL pour les personnes expérimentées
21) Afficher les deux exceptions de curseur PL/SQL.
Curseur_Déjà_Ouvert
Invaid_cursor
22) Quels opérateurs gèrent NULL ?
NVL convertit NULL en une autre valeur spécifiée.
var:=NVL(var2,'Hi');
IS NULL et IS NOT NULL peuvent être utilisés pour vérifier spécifiquement si la valeur d'une variable est NULL ou non.
23) SQL*Plus dispose-t-il également d'un moteur PL/SQL ?
Non, SQL*Plus n'intègre pas de moteur PL/SQL. Ainsi, tout le code PL/SQL est envoyé directement au moteur de base de données. C'est beaucoup plus efficace car chaque instruction n'est pas supprimée individuellement.
24) Quels packages sont disponibles pour les développeurs PL SQL ?
Série de packages DBMS_, tels que DBMS_PIPE, DBMS_DDL, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_SQL, DBMS_TRANSACTION, UTL_FILE.
25) Expliquez 3 parties de base d'un déclencheur.
- Une déclaration ou un événement déclencheur.
- Une restriction
- Une action
26) Que sont les fonctions des personnages ?
INITCAP, UPPER, SUBSTR, LOWER et LENGTH sont toutes des fonctions de caractères. Les fonctions de groupe donnent des résultats basés sur des groupes de lignes, par opposition à des lignes individuelles. Ce sont MAX, MIN, AVG, COMPTE et SOMME.
27) Expliquez TTITLE et BTITLE.
Commandes TTITLE et BTITLE qui contrôlent les en-têtes et les pieds de page des rapports.
28) Afficher les attributs du curseur de PL/SQL.
%ISOPEN:
Vérifie si le curseur est ouvert ou non
%ROWCOUNT:
Le nombre de lignes mises à jour, supprimées ou récupérées.
%FOUND:
Vérifie si le curseur a récupéré une ligne. C'est vrai si les lignes sont récupérées
%NOT FOUND:
Vérifie si le curseur a récupéré une ligne. C'est True si les lignes ne sont pas récupérées.
29) Qu'est-ce qu'une intersection ?
Intersect est le produit de deux tables et répertorie uniquement les lignes correspondantes.
30) Que sont les séquences ?
Les séquences sont utilisées pour générer des numéros de séquence sans surcharge de verrouillage. Son inconvénient est que le numéro de séquence est perdu si la transaction est annulée.
31) Comment référenceriez-vous les valeurs des colonnes AVANT et APRÈS avoir inséré et supprimé des déclencheurs ?
En utilisant le mot-clé « new.column name », les déclencheurs peuvent référencer les valeurs de colonne par nouvelle collection. En utilisant le mot-clé « old.column name », ils peuvent référencer les valeurs des colonnes par ancienne collection.
32) Quelles sont les utilisations des mots-clés SYSDATE et USER ?
SYSDATE fait référence à la date système actuelle du serveur. C'est une pseudo colonne. USER est également une pseudo-colonne mais fait référence à l'utilisateur actuel connecté à la session. Ils sont utilisés pour surveiller les changements qui se produisent dans le tableau.
33) Comment ROWID aide-t-il à exécuter une requête plus rapidement ?
ROWID est l'adresse logique d'une ligne, ce n'est pas une colonne physique. Il se compose du numéro de bloc de données, du numéro de fichier et du numéro de ligne dans le bloc de données. Ainsi, le temps d'E/S est minimisé lors de la récupération de la ligne et entraîne une requête plus rapide.
34) A quoi servent les liens de bases de données ?
Des liens de bases de données sont créés afin d'établir une communication entre diverses bases de données ou différents environnements comme le test, le développement et la production. Les liens de la base de données sont en lecture seule pour accéder également à d'autres informations.
35) À quoi sert la récupération d'un curseur ?
La récupération d'un curseur lit l'ensemble de résultats ligne par ligne.
36) A quoi sert la fermeture d'un curseur ?
La fermeture d'un curseur efface la zone SQL privée et désalloue la mémoire
37) Expliquer les utilisations du fichier de contrôle.
C'est un fichier binaire. Il enregistre la structure de la base de données. Il comprend les emplacements de plusieurs fichiers journaux, noms et horodatages. Ils peuvent être stockés à différents emplacements pour faciliter la récupération d'informations si un fichier est corrompu.
38) Expliquez la cohérence
La cohérence montre que les données ne seront pas répercutées sur les autres utilisateurs tant qu'elles ne seront pas validées, afin que la cohérence soit maintenue.
39) Différence entre les blocs anonymes et les sous-programmes.
Les blocs anonymes sont des blocs sans nom qui ne sont stockés nulle part tandis que les sous-programmes sont compilés et stockés dans la base de données. Ils sont compilés au moment de l'exécution.
40) Différence entre DECODE et CASE.
Les instructions DECODE et CASE sont très similaires, mais CASE est une version étendue de DECODE. DECODE n'autorise pas les déclarations de prise de décision à sa place.
sélectionnez decode(totalsal=12000,'high',10000,'medium') comme decode_tesr à partir de smp où smpno in (10,12,14,16) ;
Cette instruction renvoie une erreur.
CASE est directement utilisé dans PL SQL, mais DECODE est utilisé dans PL SQL via SQL uniquement.
41) Expliquez la transaction autonome.
Une transaction autonome est une transaction indépendante de la transaction principale ou parent. Il n'est pas imbriqué s'il est démarré par une autre transaction.
Il existe plusieurs situations dans lesquelles utiliser des transactions autonomes, comme la journalisation des événements et l'audit.
42) Différencier SGA et PGA.
SGA signifie System Global Area tandis que PGA signifie Program or Process Global Area. PGA ne dispose que de 10 % de taille de RAM, mais SGA dispose de 40 % de taille de RAM.
43) Quel est l'emplacement de Pre_defined_functions.
Ils sont stockés dans le package standard appelé « Fonctions, procédures et packages ».
44) Expliquez le polymorphisme en PL SQL.
Le polymorphisme est une caractéristique de la POO. C'est la possibilité de créer une variable, un objet ou une fonction avec plusieurs formes. PL/SQL prend en charge le polymorphisme sous la forme d'une surcharge d'unités de programme à l'intérieur d'une fonction membre ou d'un package. Une logique sans ambiguïté doit être évitée lors de la surcharge.
45) Quelles sont les utilisations de MERGE ?
MERGE est utilisé pour combiner plusieurs instructions DML en une seule.
Syntaxe : fusionner avec le nom de la table
en utilisant (requête)
sur (condition de jointure)
quand il n'y a pas de correspondance, alors
Commande [insérer/mettre à jour/supprimer]
quand il correspond alors
Commande [insérer/mettre à jour/supprimer]
Questions d'entretien PL/SQL pour plus de 5 ans d'expérience
46) 2 requêtes peuvent-elles être exécutées simultanément dans un système de base de données distribué ?
Oui, ils peuvent être exécutés simultanément. Une requête est toujours indépendante de la deuxième requête dans un système de base de données distribuée basé sur la validation en 2 phases.
47) Expliquez Raise_application_error.
Il s'agit d'une procédure du package DBMS_STANDARD qui permet d'émettre un message d'erreur défini par l'utilisateur à partir du déclencheur de la base de données ou du sous-programme stocké.
48) À quoi sert le paramètre out même si l'instruction return peut également être utilisée dans pl/sql ?
Les paramètres Out autorisent plus d’une valeur dans le programme appelant. Le paramètre Out n’est pas recommandé dans les fonctions. Les procédures peuvent être utilisées à la place des fonctions si plusieurs valeurs sont requises. Ainsi, ces procédures sont utilisées pour exécuter les paramètres Out.
49) Comment convertiriez-vous la date au format de date julienne ?
On peut utiliser la chaîne au format J :
SQL > sélectionnez to_char(to_date('29-Mar-2013′,'dd-mon-yyyy'),'J') comme julian de dual ;
JULIAN
50) Expliquez la BOBINE
La commande Spool peut imprimer la sortie des instructions SQL dans un fichier.
spool/tmp/sql_outtxt
sélectionnez smp_name, smp_id depuis smp où dept='accounts' ;
enrouler;
51) Mentionnez de quoi se compose le package PL/SQL ?
Un package PL/SQL se compose de
- Table PL/SQL et instructions TYPE d'enregistrement
- Procédures et fonctions
- Curseurs
- Variables (tableaux, scalaires, enregistrements, etc.) et constantes
- Noms d'exception et pragmas pour associer un numéro d'erreur à une exception
- Curseurs
52) Mentionnez quels sont les avantages des packages PL/SQL ?
Il offre plusieurs avantages comme
- Masquage forcé des informations : Il offre la liberté de choisir de garder les données privées ou publiques
- Conception descendante : Vous pouvez concevoir l'interface avec le code caché dans le package avant d'implémenter les modules eux-mêmes.
- Persistance de l'objet : Les objets déclarés dans une spécification de package se comportent comme des données globales pour tous les objets PL/SQL de l'application. Vous pouvez modifier le package dans un module, puis référencer ces modifications dans un autre module.
- Conception orientée objet : Le package donne aux développeurs une forte emprise sur la manière dont les modules et les structures de données contenus dans le package peuvent être utilisés.
- Garantir l’intégrité des transactions : Il fournit un niveau d’intégrité des transactions
- Amélioration des performances: La RDBMS suit automatiquement la validité de tous les objets du programme stockés dans la base de données et améliore les performances des packages.
53) Mentionnez quelles sont les différentes méthodes pour tracer le code PL/SQL ?
Le traçage du code est une technique cruciale pour mesurer les performances du code pendant l'exécution. Différentes méthodes de traçage comprennent
- SGBD_APPLICATION_INFO
- SGBD_TRACE
- DBMS_SESSION et DBMS_MONITOR
- utilitaires trcsess et tkproof
54) Mentionnez ce que fait le profileur hiérarchique ?
Le profileur hiérarchique pourrait profiler les appels effectués en PL/SQL, en plus de combler le fossé entre les lacunes et les attentes en matière de traçage des performances. L'efficacité du profileur hiérarchique comprend
- Rapports distincts pour SQL et consommation de temps PL/SQL
- Rapporte le nombre d'appels de sous-programmes distincts effectués dans le PL/SQL et le temps passé avec chaque appel de sous-programme.
- Plusieurs rapports d'analyse interactifs au format HTML à l'aide de l'utilitaire de ligne de commande
- Plus efficace que le profileur conventionnel et les autres utilitaires de traçage
55) Mentionnez ce que PLV msg vous permet de faire ?
Le message PLV vous permet de
- Attribuer un message texte individuel à la ligne spécifiée dans la table PL/SQL
- Il récupère le texte du message par numéro
- Il substitue automatiquement vos propres messages aux messages standards Oracle messages d'erreur avec bascule de restriction
- Chargement par lots des numéros de message et du texte à partir d'une table de base de données directement PLV msg PL/SQL table
56) Mentionnez ce que propose le forfait PLV (PL/Vision) ?
- Valeur de substitution nulle
- Ensemble de routines d'assertion
- Utilitaires divers
- Ensemble de constantes utilisées dans toute la vision PL
- Types de données prédéfinis
57) Mentionnez à quoi servent PLVprs et PLVprsps ?
- PLVprs : Il s'agit d'une extension pour l'analyse de chaînes pour PL/SQL, et c'est le niveau le plus bas de fonctionnalité d'analyse de chaînes.
- PLVprsps : Il s'agit du package de plus haut niveau permettant d'analyser le code source PL/SQL en atomes distincts. Il s'appuie sur d'autres packages d'analyse pour effectuer le travail.
58) Expliquez comment vous pouvez copier un fichier dans un fichier de contenu et un fichier dans une table PL/SQL à l'avance PL/SQL ?
Avec un seul appel de programme – "fprocédure de copie», vous pouvez copier le contenu complet d'un fichier dans un autre fichier. Alors que pour copier le contenu d’un fichier directement dans une table PL/SQL, vous pouvez utiliser le programme «fichier2pstab".
59) Expliquez comment la gestion des exceptions est effectuée à l'avance PL/SQL ?
Pour gestion des exceptions PL/SQL fournit un plugin efficace PLVexc. PLVexc prend en charge quatre actions différentes de gestion des exceptions.
- Continuer le traitement
- Enregistrez puis continuez
- Arrêter le traitement
- Enregistrer puis arrêter le traitement
Pour les exceptions qui se reproduisent, vous pouvez utiliser l'instruction RAISE.
60) Mentionnez à quel problème on pourrait être confronté lors de l'écriture des informations de journal dans une table de base de données en PL/SQL ?
Lors de l'écriture des informations de journal dans une table de base de données, le problème auquel vous êtes confronté est que les informations ne sont disponibles qu'une fois que les nouvelles lignes sont validées dans la base de données. Cela pourrait poser un problème car un tel PLVlog est généralement déployé pour suivre les erreurs et dans de nombreux cas, la transaction en cours échouerait ou nécessiterait une restauration.
61) Mentionnez quelle est la fonction utilisée pour transférer un journal de table PL/SQL vers une table de base de données ?
Pour transférer un journal de table PL/SQL, une fonction de table de journal de base de données « PROCÉDURE ps2db » est utilisé.
62) Quand devez-vous utiliser un point de sauvegarde par défaut de « restauration vers » de PLVlog ?
Le point de sauvegarde « rollback to » par défaut de PLVlog est utilisé lorsque les utilisateurs ont activé l'activité de restauration et n'ont pas fourni de point de sauvegarde alternatif dans l'appel à put_line. Le point de sauvegarde par défaut est initialisé avec la constante c none.
63) Pourquoi PLVtab est considéré comme le moyen le plus simple d'accéder à la table PL/SQL ?
Les tables PL/SQL sont les plus proches des tableaux en PL/SQL, et pour accéder à cette table, vous devez d'abord déclarer un type de table, puis déclarer la table PL/SQL elle-même. Mais en utilisant PLVtab, vous pouvez éviter de définir votre propre type de table PL/SQL et faciliter l'accès aux tables de données PL/SQL.
64) Mentionnez ce que PLVtab vous permet de faire lorsque vous affichez le contenu des tables PL/SQL ?
PLVtab vous permet de faire les choses suivantes lorsque vous affichez le contenu des tables PL/SQL
- Afficher ou supprimer un en-tête du tableau
- Afficher ou supprimer les numéros de ligne pour les valeurs du tableau
- Afficher un préfixe avant chaque ligne du tableau
65) Expliquez comment pouvez-vous enregistrer ou placer votre message dans un tableau ?
Pour enregistrer un message dans un tableau, vous pouvez le faire de deux manières
- Charger des messages individuels avec des appels vers le
add_text
procédure - Chargez des ensembles de messages à partir d'une table de base de données avec le
load_from_dbms
procédure
66) Mentionnez à quoi sert la fonction « module procédure » en PL/SQL ?
Le « module procédure » permet de convertir toutes les lignes de code en une unité de programme définie avec un seul appel de procédure. Il y a trois arguments pour les modules
- module_in
- cor_in
- Dernier_module_in
67) Mentionnez ce que font PLVcmt et PLVrb en PL/SQL ?
PL/Vision propose deux packages qui vous aident à gérer le traitement des transactions dans une application PL/SQL. Il s'agit de PLVcmt et PLVrb.
- PLVcmt : Le package PLVcmt englobe la logique et la complexité pour gérer le traitement des validations
- PLVrb : Il fournit une interface de programmation pour restaurer l'activité en PL/SQL
Ces questions d'entretien vous aideront également dans votre soutenance