Vous êtes sur la page 1sur 17

Questions rponses SQL, PLSQL et ORACLE

1.Donner la structure dun programme PL SQL ?


La structure de base dun programme PL/SQL est celle de bloc (possiblement imbriqu). Il a gnralement la une partie dclaration, corps de programme, et la partie EXCEPTION

2.Quesque le corps du programme PL/SQL ?


Le corps du programme (entre le BEGIN et le END) contient des instructions PL/SQL (assignements, boucles, appel de procdure) ainsi que des instructions SQL. Il sagit de la seule partie qui soit obligatoire.

3.Cest quoi le but de PL/SQL ?


Le but de PL/SQL est de structurer le programme pour automatisation de certaines nombres de traitements (procdure stockes, fonction etc.) et cela pour appeler une partie de programme un nom de procdure ou fonctionetc.

4.Cest quoi un sous programme en PL/SQL ?


Un sous programme PL/SQL est un block nomm qui peut prendre des paramtres et tre invoqu dans dautres blocs. Il existe deux types de sous programmes : les procdures et les fonctions.

5.Instruction LDD
CREATE, ALTER, DROP.

6.Instruction LID
SELECT

7.Instruction LMD
INSERT, UPDATE, DELETE

8.Instruction LCT
COMMIT, ROLLBACK, SAVEPOINT, SET, REVOKE,GRANT

9.Les Fonctions connu


TO_CHAR, TO_DATE, UPPER, LOWER, ...

10.Quels sont les objets quon peut dclarer dans la partie dclare ?
On peut dclarer : les variables, les Curseurs, exception, et les types 1

11.Comment dclarer une variable constante ?


Nom_var CONSTANT type_var := valeur_var ;

12.Comment dclarer un type ?


TYPE nom_type IS RECORD Exemple:
TYPE avionAirbus_rec IS RECORD ( nserie CHAR(10), nomAvion CHAR(20), usine CHAR(10) := 'Blagnac', nbHVol NUMBER(7,2) );

13.Comment dclarer les variables globales ?


On utilisant le mot cl VARIABLE nom_var_glob TYPE_VAR Exemple : VARIABLE g_compteur NUMBER;

14.Comment appeler une variable globale ?


On lappelle on prcdent la variable par : Exemple : :nom_var_glob

15.Comment rcuprer le type dun champ et lattribuer certaine variable ?


En utilise le %type Dans la partie DCLARE : Nom_variable nom_table.nom_champ%type

16.Comment rcuprer tout les types dune ligne ?


En utilise le %ROWTYPE Dans la partie DCLARE : Nom_variable nom_table%ROWTYPE

17.Cest quoi un curseur ?


Un curseur est une variable dynamique qui prend pour valeur le rsultat dune requte. Autrement dit cest un objet contenant le rsultat dun select. Exemple : CURSOR empCur IS SELECT * FROM Table; 2

Un curseur utilise la mmoire temp, donc il est fortement dconseill dutiliser les curseurs sur les tables volumineuses car il occupe lespace de la mmoire RAM Donc pour cela pens partitionner les tables

18.Cest quoi un Curseur paramtr ?


Un curseur paramtr est un curseur dont on peut lui passer des paramtres. Lobjectif de son utilisation lorsquon a des variables de filtres qui change en permanence, et quon a besoin de rutiliser ce curseur Declare Nom_Var ; Cursor Nom_Cursor is Requte ; Begin Open Nom_Cursor; Fetch Nom_Cursor Into Nom_Var ; -- Permet de rcuprer ligne par Ligne dans le cureur. --Traitements; Close End; Nom_Cursor ;

19.Cest quoi un Curseur implicite ?


Dans la partie BEGIN en fait Select count (*) into VAR from Produit

20.Comment dclarer un curseur paramtr ?


Dans la partie dclarative du programme PL/SQL : Cursor nom_cur (param1 IN type_param1, ) is

21.Comment appeler le curseur paramtr ?


Nom_cur( valeur_pram) exemple : nom_curs(10025) ;

22.Quelle sont les attributs du curseur ?

%FOUND 3

Cet attribut prend la valeur TRUE lorsquune ligne est ramene, sinon il prend la valeur FALSE %NOTFOUND Cet attribut prend la valeur FALSE lorsquune ligne est ramene, sinon il prend la valeur TRUE %ISOPEN Cet attribut prend la valeur TRUE lorsque le curseur indiqu est ouvert, sinon il prend la valeur FALSE %ROWCOUNT Cet attribut retourne le nombre de lignes impactes par la dernire instruction SQL

23.Quelle sont les deux mthodes pour utiliser le contenu dun curseur (parcourir le curseur)
Il existe deux mthodes pour parcourir un curseur : - instruction FETCH - boucle FOR

24.Diffrence entre curseur implicite et curseur explicite ?


Implicite : pas dclaration retourne une seule ligne nest pas paramtrs on peut lui affecter des variables partir dune requte syntaxes : Select count (*) into VAR from Produit Explicite: ncessaire une dclaration dans la partie DCLARE. Retourne une ou plusieurs valeurs Peut tre paramtr Il faut utiliser lOPEN

25.Le corps dun curseur sans paramtre et avec paramtre ?


1. Curseur sans paramtre
DECLARE compteur number(3); i number(3); cursor get_nb_clients IS select count(*) from clients; BEGIN OPEN get_nb_clients; 4

FETCH get_nb_clients INTO compteur; FOR i IN 1..compteur LOOP dbms_output.put_line('Nombre : ' || i ); END LOOP; CLOSE get_nb_clients; END;

2. Curseur avec paramtre


DECLARE Cursor C_Client (P_Ville in Type) is select Nom, Prenom, Age from client; BEGIN For Var1 in C_Client (LYON) loop dBms_output.put_line(var1.Nom||.||Var1.Prenom||.||Var1.Age) Close C_Client; End loop; END;

26.Cest quoi la gestion des exceptions?


PL/SQL permet de dnir dans une zone particulire (dse gestion dexception), lattitude que le programme doit avoir lorsque certaines erreurs dfinies ou prdnies se produisent.

27.Cest quoi une transaction ?


Cest lensemble des modifications des donnes sur la base ou la table (MDL) UPDATE INSERT DELETE

28.Cest quoi le Dbut de transaction ?


Cest le dbut de la session de travail ou fin de la transaction prcdente 5

29.Comment faire valider ou annuler une transaction ?


Validation (et fin) dune transaction : COMMIT; Annulation (et fin) dune transaction : ROLLBACK; Fin de session de travail validation automatique

30.Cest quoi une jointure ?


Les jointures permettent dextraire des donnes issues de plusieurs tables. Une jointure met en relation deux tables sur la base dune clause de jointure (comparaison de colonnes). Gnralement, cette comparaison fait intervenir une cl trangre dune table avec une cl primaire dune autre table (le modle relationnel est bas sur les valeurs).

31.Quels sont les types de jointure ?


On distingue : les jointures internes (inner joins) : vrifier si la condition est existe, il affiche lenregistrement lquijointure (equi join) est la plus connue, Une quijointure utilise loprateur dgalit dans la clause de jointure et compare gnralement des cls primaires avec des cls trangres. lautojointure (self join) est un cas particulier de lquijointure qui met en uvre deux fois la mme table (des alias de tables permettront de distinguer les enregistrements entre eux).

La jointure externe (outer join) : Les lignes de la table dominante sont retournes mme si elles ne satisfont pas aux conditions de jointure, c.--d

32.Cest quoi une procdure stocke ?


Une procdure stocke est une suite dordres SQL stocke dans la base, pouvant tre excute par lappel de son nom. Les procdures peuvent recevoir et renvoyer des paramtres, retourner des valeurs et appeler dautres procdures. Les procdures sexcutent gnralement plus rapidement que les mmes instructions lances de manire interactive ou partir dun batch. Lutilisation de procdures rduit le trafic rseau.

33.Gestion des procdures stockes?


Les procdures sont cres, supprimes et excutes respectivement par les commandes suivantes: CREATE PROC, DROP PROC, EXEC. 6

34.Utilisations des paramtres?


Les paramtres amliorent la flexibilit des procdures. Les noms, les types et les valeurs par dfaut des paramtres sont dfinis lors de la cration de la procdure. Les valeurs des paramtres sont spcifies par lappelant lorsque la procdure sexcute

35.Le corps dune procdure stocke ?

1. Procdure sans paramtre


create or replace procedure list_nom_clients IS BEGIN DECLARE nom varchar2(30); CURSOR get_nom_clients IS select nom,adresse from clients; BEGIN FOR toto IN get_nom_clients LOOP dbms_output.put_line('Employ : ' || UPPER(toto.nom) ||' Ville : '|| toto.adresse); END LOOP; END; END;

2. Procdure avec paramtre


create or replace procedure list_nom_clients (ville IS BEGIN DECLARE CURSOR get_nb_clients IS select count(*) from clients where adresse=ville; BEGIN open get_nb_clients; 7 IN varchar2, result OUT number)

fetch get_nb_clients INTO result; end; end;

36.Comment excuter une procdure stocke seule dans plsql developper?


Begin Non_Procedure (P1, P2,) End;

37.Comment excuter une procdure stocke dans un scripte ?


Non_Procedure (P1, P2,)

38.O sont stockes les procdures stockes ?


Les procdures stockes sont stockes par dfaut dans USER_SOURCE 39.peut on faire deux jointure externe (Jointure externe de table A Table B et Jointure Externe de tabla A table c) ? une table ne peut pas avoir deux jointure externe.

40.Cest quoi une fonction ?


La diffrence avec la procdure stocke et que dans la fonction on a un seul retour, et que la fonction peut tre appeler dans un select alors que la procdure stocke on ne peut pas lappeler dans un select

41.Avantage dune fonction ?

42.Corps dune fonction ?

create or replace function nombre_clients return number IS BEGIN DECLARE 8

i number; CURSOR get_nb_clients IS select count(*) from clients; BEGIN Open get_nb_clients Fetch get_nb_clients INTO i; Return I; END; END;

43.Diffrence entre procdure stocke et dune fonction ?

Procdure
Sexcute comme une requte PL/SQL Pas de type de donne RETURN Peut retourner une, aucune ou plusieurs valeurs

Fonction
Est appel dans une expression Doit avoir un type de donne RETURN Ne retourne quune seule valeur

44.Index ?
Cest un objet qui permet de dfinir la position de chaque valeur de champ, pour avoir accs meilleur aux donnes.

45.Les types dindex?


Index global : crer un index sur la table Index unique: crer sur la cl primaire Index compos : crer sur la table Index local : se fait sur la partition de table

46.Avantage dIndex ?

47.Inconvnient dindex ?

48.Dsactiv ou activ un Index ?


Alter index nom_index DISABLE (ENABLE)

49.Pour quoi dsactiver un Index ?


Cest pour loptimisation lors dinsertion de donnes en masse, car pour chaque ligne doit tre recalcul

50.Pour quoi activ un Index ?

51.Problme dactivation dun index ?


Supprimer lindex Recrer lindex Recalculer lindex (faire un build), pour mettre les valeurs dans lordre.

52.Cest quoi une vue ?

Cest une table virtuelle qui nexiste pas rellement calculs a partir des tables sous formes des requtes
53.Cest quoi lintrt dune vue ?
Simplifier laccs aux donnes. Sauvegarde des donnes. Scurits des donnes (accs en lecture pas modification pour des raisons de scurit). Rapidit lors de lexcution.

54.Les problmes dune vue ?


Pour mettre jour les tables il faut revenir la table mre (recrer la vue).

55.Partitionnement des tables ?

56.Pourquoi on fait les purges des donnes ?


On le fait dans deux cas de figure : Pour supprimer les donnes intitules 10

Aussi sur les tables temporaires (pendant les traitements on a besoin dune table temporaire pour vrification les donnes cible on supprime la table temporaire.

57.Fonction DECODE ?
Cest pour transcoder les valeurs de champs Exemple : id A B C D Type_contrat Prvoyance Epargne retraite

Function DECODE(Type_contrat, Prvoyance, PV, Epargne, EP, Retraite, RT) ; NB : on peut utiliser le case pour transcoder les valeurs de champs ou les variables : Case Type_contrat When Prvoyance . . . END CASE then PV ;

58.Fonction NVL ?
La fonction NVL test si une valeur de champs est Null on lui attribue une valeur par dfaut Exemple :

id A B C D Function NVL(Quantit, 0) ;

Quantit 12 13 16

Donc la valeur par dfaut pour la quantit de la valeur du champ D est 0. Si jamais on veut faire la somme donc sum NVL(Quantit, 0)

11

59.SAVEPOINT ?
SAVEPOINT est un marqueur dans une transaction qui permet une restauration partielle. Comme des modifications sont apportes dans une transaction, nous pouvons crer des points de sauvegarde l'occasion de diffrents points de la transaction. Si nous rencontrons une erreur, nous pouvons revenir une SAVEPOINT ou tous les chemins du retour au dbut de l'opration Exemple :

UPDATE employs SET salaire = 7000 WHERE last_name = 'Banda; banda_sal SAVEPOINT;

60.Cest quoi la diffrence entre Truncate et Delete ?


Truncate : La commande TRUNCATE supprime tous les enregistrements dune table et libre ventuellement lespace de stockage utilis par la table Supprission totale des enregistrements de la table Auto commit Pas de clause Where Le rall back ne permet pas de rcuprer les donnes Plus rapide

Delete : Possibilit dutiliser un rall back, commit Rcupration de donnes avec rall back Supprission de lignes (enregistrement) Possibilit dutiliser les filtres(Where)

61.Comment faire afficher tous les tables de la BD ?


Select * from user_tables; Select * from tab;

62.Que signifie LOB ?


Les types LOB (Large Object Binary) dOracle sont BLOB, CLOB, NCLOB et BFILE. Ils servent stocker de grandes quantits de donnes non structures (textes, images, vidos, sons). Ils succdent aux types LONG.

12

63.Cest quoi BLOB?


Est un type de donnes binaire, permettent de stocker des donnes non structures (structure Opaque pour Oracle) comme le multimdia (images, sons, vido, etc.).

64.Cest quoi CLOB ?


Elle permet de stocker des ots de caractres (exemple : du texte).

65.Combien peut stocker le type BLOB et CLOB ?


Elles peuvent stocker jusquau 4G de donnes non structurer

66.Que fait SQLCODE ?


SQLCODE permet de rcuprer le code de message derreur

67.Que fait SQLERRM ?


SQLERRM permet de rcuprer le message derreur

68.Que fait la procdure RAISE_APPLICATION_ERROR ?


La procdure RAISE_APPLICATION_ERROR permet de dnir ses propres messages et codes derreurs. Cette procdure vite le renvoi dexceptions non traites car le numro derreur (inclus dans RAISE_APPLICATION_ERROR) sera communiqu lenvironnement appelant.
RAISE_APPLICATION_ERROR(numroErreur, message [, {TRUE | FALSE}]);

La procdure RAISE_APPLICATION_ERROR peut tre utilise dans le code ou dans la section de traitement des exceptions dun programme PL/SQL. Lappel la procdure RAISE_APPLICATION_ERROR interrompt le programme et retourne le numro et le message derreur qui peuvent tre rcuprs par lenvironnement englobant (variables SQLCODE et SQLERRM).

69.Cest quoi UPDATE STRATEGY ?

70.Comment dupliquer une table partir dune table sans scripte ?


CREATE TABLE Nom_Table AS SELECT *FROM Nom_Table2

13

71.Comment dupliquer juste la structure (les champs) ?


Juste il faut faire une condition fausse comme a en rcupre juste les champs Create table mokrane2 AS select * from Mokrane1 where champ1 = 0

72.Quelle est la plage de numro derreurs ?


Valeur dnie par l'utilisateur pour l'exception, comprise entre 20 000 et +20 999 ;

73.Cest quoi le ROWID ?


Le format du rowid de chaque enregistrement inclut le numro de lobjet, le numro relatif du chier, le numro du bloc dans le chier et le dplacement dans le bloc. Le mot-cl qui dsigne cette pseudo-colonne non modiable (mais accessible) est ROWID.

74.Cest quoi le ROWNUM ?


La pseudo-colonne ROWNUM retourne un entier indiquant lordre squentiel de chaque enregistrement extrait par la requte. Le premier possde implicitement une colonne ROWNUM value 1, pour le deuxime elle lest 2, etc.

75.rowid Explian.
Chaque enregistrement dans une base de donnes est identifi par le systme a gnr une valeur appele ROWID

76.Quels sont les versions dOracle ? 77.SQL Loader ?


Sql Loader permet de charger les fichiers plats sur la base de donnes Exemple LOAD DATA INFILE data.txt TRUNCATE INTO VIEW vue FIELDS TREMINATED By ; (ROO_IMA_REF)

78. SPOOL ?

14

la table space ? Est un espace resrv sur le disque dure pour lensemble de table de base de donne. Shema : est un espace logique Tablespace : est un espace physique Comment donner un prevelge au utilisateur ? Graint nom_prevel ON nom_table(vue) TO nom_utilisateur (public) Comment relev le prevelege au utilisateur ? Revok nom_prev ON nom_table from nom_utilisateur Type de containte oracle ? Cl primaire, cl etrangre, Comment desactive une contrainte ? Alter table contraint nom_contraint disable

Comment dsactiv un index ? Alter index nom_index Disable

Valider une contrainte ? Alter table contraint nom_contraint enable Suprime une contrainte ? Alter table drop contraint nom_contraint Comment executer une exception ? Raise_nom_exception Comment appeler le cursor ?
15

Nom_cursor Cest quoi un debuger oracle ? Cest un objet qui ce trouve sur oracle qui debugue un bloc plsql Quelle est la fonction qui ajoute les mois une date donne ? ADD_MONTH(date,nombre_mois) Comment recuper le dernier jour de mois ? Last_date(date) Comment rec la date suivante ? Next_date(date) Comment recup date systeme ? Sys_date Comment convertire une chaine de caractere de nombre vers un nombre ? To_nomber(nmbre en caractere) Comment recup le nombre plus grand ? Greatest(y,z) Recup le plus petit ? Least (y,z) Recup lidentifiant ? UED Recup nom_utilisateur ? USER Fait quoi raise_application_error ? Definie le message derreur Cest clob ? Pour stock les images
16

Sqlcode ? Rec code Cest quoi une instance oracle ? Cest une allocation dun espace memoire et un processeur pour une base donne Cluster ? Cest comme fait les jointures entre plusieurs tables

1979 Oracle 2 Premire version commerciale crite en C/assembleur pour Digital pas de mode Transactionnel. 1983 Oracle 3 Rcrit en C - verrous. 1984 Oracle 4 Portage sur IBM/VM, MVS, PC transaction (lecture consistante). 1986 Oracle 5 Architecture client-serveur avec SQL*Net version pour Apple. 1988 Oracle 6 Verrouillage niveau ligne sauvegarde/restauration AGL PL/SQL. 1991 Oracle 6.1 Parallel Server sur DEC. 1992 Oracle 7 Contraintes rfrentielles procdures catalogues dclencheurs version Windows en 1995. 1994 Serveur de donnes vido. 1995 Connexions sur le Web. 1997 Oracle 8 Objet-relationnel partitionnement LOB Java. 1998 Oracle 8i i comme Internet, SQLJ Linux XML. 2001 Oracle9i Services Web serveur dapplications architectures sans l. 2004 Oracle10g g comme Grid computing (ressources en clusters). 2007 Oracle11g Auto-conguration.

17