Télécharger le PDF
1) Qu'est-ce que PL SQL?
PL SQL est un langage procédural doté de SQL interactif, ainsi que de constructions de langage de programmation procédurale telles que le branchement conditionnel et l'itération.
2) Faites la différence entre% ROWTYPE et TYPE RECORD.
% ROWTYPE est utilisé lorsqu'une requête renvoie une ligne entière d'une table ou d'une vue.
TYPE RECORD, en revanche, 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% ROWTYPE
Le curseur c1 est select smpno, dept from smp;
e_rec c1% ROWTYPE
3) Expliquez les utilisations du curseur.
Le curseur est une zone privée nommée en SQL à partir de laquelle des informations sont accessibles. Ils sont tenus de 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. POUR smp_rec DANS C1 LOOP
total = total + 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 un déclencheur de base de données. Il est utilisé pour:
1) Modifications des données d'audit.
2) Consignez les événements de manière transparente.
3) Appliquer des règles métier complexes.
4) Maintenir les tables de répliques
5) Dériver les valeurs de colonne
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: définis par l'utilisateur et prédéfinis.
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
PROGRAM_ERROR
TIMEOUT _ON_RESOURCE
STORAGE_ERROR
CONNEXION REFUSÉE
VALUE_ERROR
etc.
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 procédures sont appelées dans un bloc PL SQL.
La fonction est appelée comme partie d'une expression.
total: = calculer_sal ('b644')
La procédure est appelée comme une instruction en PL / SQL.
calculer_bonus ('b644');
10) Expliquez deux tables virtuelles disponibles au moment de l'exécution du déclencheur de base de données.
Les colonnes de table sont appelées THEN.column_name et NOW.column_name.
Pour les déclencheurs liés à INSERT, les valeurs NOW.column_name sont disponibles uniquement.
Pour les déclencheurs liés à DELETE, les valeurs THEN.column_name sont uniquement disponibles.
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 différent des autres valeurs
3) Si une valeur dans une expression est NULL, alors l'expression elle-même est évaluée à NULL sauf pour l'opérateur de concaténation (||)
12) Comment un processus de PL SQL est-il compilé?
Le processus de compilation comprend des processus de vérification de la syntaxe, de liaison et de génération de p-code.
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 qui contiennent des données. Cela s'appelle Binding. 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é la prochaine fois qu'il est exécuté.
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 lorsque la transaction se termine et ce qui suit est vrai.
- Le travail effectué lors d'une transition est annulé comme s'il n'avait jamais été émis.
- 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éfinissez les curseurs implicites et explicites.
Un curseur est implicite par défaut. L'utilisateur ne peut pas contrôler ni traiter les informations de 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 de manière séquentielle lorsque le curseur la renvoie.
16) Expliquez l'erreur de 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 tels que les procédures autonomes non stockées. S'il est utilisé, il doit venir en premier dans un fichier autonome.
18) Combien de déclencheurs peuvent être appliqués à une table?
Un maximum de 12 déclencheurs peut être appliqué à une table.
19) Quelle est l'importance de SQLCODE et SQLERRM?
SQLCODE renvoie la valeur du nombre 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 le trouver dans un bloc PL SQL?
la variable d'état du curseur% ISOPEN peut être utilisée.
21) Afficher les deux exceptions de curseur PL / SQL.
Cursor_Already_Open
Invaid_cursor
22) Quels opérateurs traitent NULL?
NVL convertit NULL en une autre valeur spécifiée.
var: = NVL (var2, 'Salut');
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'a pas de moteur PL / SQL intégré. 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?
SGBD_ série de packages, 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 de caractère?
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. Ils sont MAX, MIN, AVG, COUNT et SUM.
27) Expliquez TTITLE et BTITLE.
Commandes TTITLE et BTITLE qui contrôlent les en-têtes et pieds de page de rapport.
28) Afficher les attributs de 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. Il a la valeur True si les lignes ne sont pas extraites.
29) Qu'est-ce qu'une intersection?
Intersect est le produit de deux tableaux et ne répertorie que 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éreriez-vous les valeurs de colonne 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 de colonne 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 se réfère à 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 réduit au minimum lors de la récupération de la ligne et se traduit par une requête plus rapide.
34) À quoi servent les liens de base de données?
Les liens de base de données sont créés afin de former une communication entre diverses bases de données ou différents environnements tels que le test, le développement et la production. Les liens de base de données sont en lecture seule pour accéder également à d'autres informations.
35) Que fait la récupération d'un curseur?
La récupération d'un curseur lit le jeu de résultats ligne par ligne.
36) Que fait la fermeture d'un curseur?
La fermeture d'un curseur efface la zone SQL privée et désalloue la mémoire
37) Expliquez 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, des noms et des horodatages. Ils peuvent être stockés à différents endroits pour aider à la récupération des informations si un fichier est corrompu.
38) Expliquer la cohérence
La cohérence montre que les données ne seront pas reflétées aux autres utilisateurs tant que les données ne seront pas validées, de sorte que la cohérence est 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 (total = 12000, 'high', 10000, 'medium') comme decode_tesr 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 mère. Il n'est pas imbriqué s'il est démarré par une autre transaction.
Il existe plusieurs situations pour utiliser des transactions autonomes telles que la journalisation des événements et l'audit.
42) Faites la différence entre SGA et PGA.
SGA signifie System Global Area tandis que PGA signifie Program ou Process Global Area. PGA ne reçoit que 10% de RAM, mais SGA a 40% 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 dans 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é de programme à l'intérieur d'une fonction membre ou d'un package… Une logique non ambiguë doit être évitée pendant la surcharge.
45) Quelles sont les utilisations de MERGE?
MERGE est utilisé pour combiner plusieurs instructions DML en une seule.
Syntaxe: fusionner dans le nom de la table
utilisation (requête)
on (condition de jointure)
quand il ne correspond pas alors
Commande [insérer / mettre à jour / supprimer]
quand ils sont appariés alors
Commande [insérer / mettre à jour / supprimer]
46) Deux 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 seconde requête dans un système de base de données distribué 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 base de données ou du sous-programme stocké.
48) Quel est le paramètre out utilisé pour l'instruction de retour eventhough peut également être utilisée dans pl / sql?
Les paramètres de sortie autorisent plus d'une valeur dans le programme appelant. Le paramètre Out n'est pas recommandé dans les fonctions. Des 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 julien?
Nous pouvons utiliser la chaîne de format J:
SQL> sélectionnez to_char (to_date ('29 -Mar-2013 ',' dd-mon-yyyy '),' J ') comme julien de dual;
JULIEN
50) Expliquez SPOOL
La commande Spool peut imprimer la sortie des instructions SQL dans un fichier.
spool / tmp / sql_outtxt
sélectionnez smp_name, smp_id à partir de smp où dept = 'comptes';
spool off;
51) Mentionner en quoi consiste 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 (tables, scalaires, enregistrements, etc.) et constantes
- Noms d'exception et pragmas pour relier un numéro d'erreur à une exception
- Curseurs
52) Mentionner quels sont les avantages des packages PL / SQL?
Il offre plusieurs avantages comme
- Masquage des informations forcées: 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 de mettre en œuvre les modules eux-mêmes
- Persistance des objets : 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 façon dont les modules et les structures de données à l'intérieur du package peuvent être utilisés
- Garantir l'intégrité des transactions: il fournit un niveau d'intégrité des transactions
- Amélioration des performances: le SGBDR suit automatiquement la validité de tous les objets programme stockés dans la base de données et améliore les performances des packages.
53) Mentionner quelles sont les différentes méthodes pour tracer le code PL / SQL?
Le code de suivi est une technique cruciale pour mesurer les performances du code pendant l'exécution. Différentes méthodes de traçage comprennent
- DBMS_APPLICATION_INFO
- DBMS_TRACE
- DBMS_SESSION et DBMS_MONITOR
- utilitaires trcsess et tkproof
54) Mentionner que fait le profileur hiérarchique?
Le profileur hiérarchique pourrait profiler les appels effectués en PL / SQL, en plus de combler l'écart entre les failles et les attentes du traçage des performances. L'efficacité du profileur hiérarchique comprend
- Rapports distincts pour la consommation de temps SQL et 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 d'autres utilitaires de traçage
55) Mentionner ce que PLV msg vous permet de faire?
Le msg 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 remplace automatiquement vos propres messages par les messages d'erreur Oracle standard avec bascule de restriction
- Chargement par lots des numéros de message et du texte d'une table de base de données directement Table PLV msg PL / SQL
56) Mentionner quelles sont les offres du package PLV (PL / Vision)?
- Valeur de substitution nulle
- Ensemble de routines d'assertion
- Utilitaires divers
- Ensemble de constantes utilisées tout au long de la vision PL
- Types de données prédéfinis
- 57) Mentionner à quoi servent les 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 la fonctionnalité d'analyse de chaînes
- PLVprsps: C'est le package de plus haut niveau pour analyser le code source PL / SQL en atomiques séparés. Il s'appuie sur d'autres packages d'analyse pour effectuer le travail.
58) Expliquez comment vous pouvez copier un fichier dans un contenu de fichier et un fichier dans une table PL / SQL à l'avance PL / SQL?
Avec un seul appel de programme - " fcopy procedure", 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 " file2pstab" .
59) Expliquez comment la gestion des exceptions est effectuée à l'avance PL / SQL?
Pour la gestion des exceptions, PL / SQl fournit un plugin PLVexc efficace. PLVexc prend en charge quatre actions de gestion des exceptions différentes.
- 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) Mentionner le problème auquel 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 que vous rencontrez est que les informations ne sont disponibles qu'une fois que les nouvelles lignes sont validées dans la base de données. Cela peut 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 actuelle échouerait ou nécessiterait une annulation.
61) Mentionner 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 "PROCEDURE ps2db" est utilisée.
62) Quand vous devez utiliser un point de sauvegarde par défaut "rollback to" de PLVlog?
Le point de sauvegarde par défaut "rollback to" 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é à la constante c none.
63) Pourquoi PLVtab est-il considéré comme le moyen le plus simple d'accéder à la table PL / SQL?
La table PL / SQL est la plus proche des tableaux en PL / SQL, et pour accéder à cette table, vous devez d'abord déclarer un type de table, puis vous devez 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) Mentionner ce que PLVtab vous permet de faire lorsque vous affichez le contenu des tables PL / SQL?
PLVtab vous permet d'effectuer les opérations suivantes lorsque vous affichez le contenu des tables PL / SQL
- Afficher ou supprimer un en-tête pour le tableau
- Afficher ou supprimer les numéros de ligne pour les valeurs de table
- Afficher un préfixe avant chaque ligne du tableau
65) Expliquez comment pouvez-vous enregistrer ou placer votre msg dans une table?
Pour enregistrer des msg dans une table, vous pouvez le faire de deux manières
- Charger des messages individuels avec des appels à la procédure add_text
- Charger des ensembles de messages à partir d'une table de base de données avec la procédure load_from_dbms
66) Mentionner à quoi sert la fonction "procédure module" en PL / SQL?
La "procédure module" 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
- Last_module_in
67) Mentionner ce que font PLVcmt et PLVrb en PL / SQL?
PL / Vision propose deux packages qui vous aident à gérer le traitement des transactions dans l'application PL / SQL. C'est 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