Fichier PDF

Partage, hébergement, conversion et archivage facile de documents au format PDF

Partager un fichier Mes fichiers Convertir un fichier Boite à outils Recherche Aide Contact



PLSQL nadhem belhaj .pdf



Nom original: PLSQL nadhem belhaj.pdf
Mots-clés: test

Ce document au format PDF 1.4 a été généré par Virtual PDF Printer - www.go2pdf.com / Virtual PDF Printer1.01, et a été envoyé sur fichier-pdf.fr le 08/07/2010 à 12:42, depuis l'adresse IP 41.229.x.x. La présente page de téléchargement du fichier a été vue 3669 fois.
Taille du document: 925 Ko (108 pages).
Confidentialité: fichier public




Télécharger le fichier (PDF)









Aperçu du document


Le Langage Oracle PL/SQL
Préparé par :
Nadhem Bel Hadj

Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

PLAN (1/2)
Introduction à PL/SQL,
Structure d’un bloc PL/SQL,
Gestion des variables PL/SQL,
Les tables PL/SQL,
Les records PL/SQL,
Le typage dynamique,
Opérateurs et fonctions PL/SQL,
Référence des variables non PL/SQL,
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

2

PLAN (2/2)
Blocs imbriqués,
La clause INTO
La manipulation des données,
Les transactions,
Les structures de contrôle PL/SQL,
Les curseurs,
La gestion des exceptions,
Les Triggers de base de données.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

3

PL/SQL introduction
Qu’est ce que PL/SQL?
PL/SQL est une extension de SQL avec des
concepts de langage de programmation.
La manipulation de données et les requêtes
sont incluses dans le code PL/SQL.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

4

Avantages de PL/SQL
Tous ceux d’un langage procédural de
gestion, en particulier :

+

Gestion d’Erreurs
Portabilité

Intégration à la base

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

5

PL/SQL architecture
SQL
Application

SQL

SGBD/R

SQL
SQL

Application

SQL
IF...THEN
SQL
ELSE
SQL
END IF;
SQL

Oracle9i
avec PL/SQL

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

6

Environnement PL/SQL
Moteur PL/SQL dans Oracle 9i
Oracle9i Server
SQL*Plus
Block
PL/SQL

PL/SQL Engine
non-SQL

Block
PL/SQL

SQL

Procedural
Statement
Executor

SQL Statement Executor

Nadhemb@yahoo.com

I-8a

Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

7

Environnement PL/SQL
Moteur PL/SQL dans les outils
Forms
Trigger
Block
PL/SQL

PL/SQL Engine
non-SQL

Block
PL/SQL

SQL

Procedural
Statement
Executor

Oracle 9i Server
PL/SQL Engine
Procedural
Statement
Executor
Nadhemb@yahoo.com

SQL Statement Executor

I-8b

Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

8

Objectifs
Déclarer et utiliser des variables et des
constantes en PL/SQL.
Assigner de nouvelles valeurs aux
variables dans la section exécutable.
Créer et exécuter un bloc PL/SQL.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

9

Structure d'un Block PL/SQL
[ DECLARE ]
- Variables, constantes, curseurs,
& exceptions
BEGIN

- Ordres SQL
- Instructions de Contrôle PL/SQL
- Branchements conditionnels, etc.

[ EXCEPTION ]
- Traitements à effectuer si erreurs
END ;
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

10

Règles Syntaxiques d'un Bloc
PL/SQL
Les instructions peuvent être écrites
sur plusieurs lignes.
Identifiants doivent :

Contenir jusqu'à 30 caractères.
Être encadrés de guillemets s’ils
contiennent un mot réservés.
Commencer par une lettre.
Avoir un nom distinct de celui d'une table
ou d'une colonne de la base.

Nadhemb@yahoo.com

1-6a

Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

11

Règles Syntaxiques d'un Bloc
PL/SQL
Les chaînes de caractères et les dates doivent
être entourées de simples cotes ( ' ' ).
Les nombres peuvent avoir de simples
valeurs ou une notation scientifique
Les commentaires peuvent être
- sur plusieurs lignes avec :
/* début de commentaire
fin de commentaire*/
- sur une ligne précédée de :
-- début et fin de commentaire
Nadhemb@yahoo.com

1-6b

Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

12

Gestion des Variables en
PL/SQL
Déclarer et initialiser les variables dans la
section déclarative.
Assigner une valeur à une variable.
Transmettre des valeurs dans les blocs
PL/SQL à l'aide de paramètres.
Visualiser les résultats à la console ou dans
un fichier.
DBMS_OUTPUT.PUT_LINE
UTL_FILE

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

13

Déclaration de Variables et
Constantes - Syntaxe
NomVar [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];

Adopter des conventions pour nommer des
objets.
Initialiser les constantes et les variables
déclarées NOT NULL.
Déclarer au plus un identifiant par ligne.
Le type peut être primitif ou objet.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

14

Principaux types primitifs
BINARY_INTEGER
NUMBER [ ( precision, scale ) ]
CHAR [ ( longueur_maximum ) ]
LONG
VARCHAR2 ( longueur_maximum )
DATE
BOOLEAN
ROWID (pseudo-colonne)
Etc…
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

15

Déclaration de Variables
Exemples
c
nom
cpt
tot
Dat
nb
vrai

CHAR( 1 );
VARCHAR2(10) := ‘Scott’;
BINARY_INTEGER := 0;
NUMBER( 9, 2 ) := 0;
:= SYSDATE + 7;
CONSTANT NUMBER ( 3, 2 ) := 8.25;
BOOLEAN NOT NULL := TRUE;

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

16

Exemple de prgm PL/SQL
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2
nom VARCHAR2(15) := 'SCOTT';
3 BEGIN
4
DBMS_OUTPUT.PUT_LINE(nom);
5 END;
6 /
SCOTT
PL/SQL procedure successfully completed.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

17

Types de Données Composites

Deux Types de Données Composites:


TABLES PL/SQL



RECORDS PL/SQL

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

18

Structure de Table PL/SQL
Clef Primaire
...

Colonne
...

1

SCOTT

2

SMITH

3

KING

...

...

BINARY_INTEGER

SCALAIRE

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

19

Déclaration d'une TABLE
PL/SQL
DECLARE
TYPE
[ NOT

nom_type IS TABLE OF type_scalaire
NULL ] INDEX BY BINARY_INTEGER ;

id_var
DECLARE
TYPE

toto1
toto2
.../...

nom_type ;

nom_type
IS TABLE OF VARCHAR2 (25)
INDEX BY BINARY_INTEGER ;
nom_type;
nom_type;

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

20

Record PL/SQL
Peuvent contenir un ou plusieurs
champs de type scalaire, RECORD ou
TABLE.
Sont similaires à la structure
d'enregistrements utilisée dans les L3G.
Traitent un ensemble de champs
comme une unité logique.
Pratiques pour récupérer et traiter les
données d'une table.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

21

Déclarer un RECORD PL/SQL
DECLARE

TYPE nom_type
nom_type IS RECORD
( champ1 type_att [NOT NULL] { := | DEFAULT expr}
expr}
[,champ2
[,champ2 type_att [NOT NULL] { := | DEFAULT expr }] );
id_var

DECLARE
TYPE

emp
.../...

nom_type;

employe IS RECORD
( ename
VARCHAR2( 25 ),
job
VARCHAR2( 25 ),
sal
NUMBER( 7,2 ) );
employe;

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

22

Exemple
SQL>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
KING

DECLARE
TYPE employe IS RECORD
( ename
VARCHAR2( 25 ),
job
VARCHAR2( 25 ),
sal
NUMBER( 7,2 )
);
empl employe;
BEGIN
SELECT ename, job, sal
INTO empl
FROM emp
WHERE empno = 7839;
DBMS_OUTPUT.PUT_LINE(empl.ename);
DBMS_OUTPUT.PUT_LINE(empl.job);
DBMS_OUTPUT.PUT_LINE(empl.sal);
END;
/
PRESIDENT 5000

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

23

Le typage dynamique :
l‘attribut %TYPE
Permet de déclarer une variable à partir :
Ø
Ø

D'une autre variable déjà déclarée
De la définition d’un attribut de la base de
données

à Préfixer %TYPE avec :
Le nom de la variable déclarée précédemment
Le nom table.colonne de la base de données
à Dans ce cas PL/SQL évalue le type de donnée et sa taille (ce qui
peut nécessité un accès au dictionnaire de la base).
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

24

L'Attribut %TYPE - Exemple
DECLARE
nom
job
balance
min_balance

scott.emp.ename%TYPE;
emp.job%TYPE;
NUMBER( 7, 2 );
balance%TYPE := 10;

Le type de données de la colonne peut être inconnu.
Ø Le type de données de la colonne peut changer en
exécution.
à Maintenance plus aisée.
Ø

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

25

Exemple
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 nom scott.emp.ename%TYPE;
3 BEGIN
4 SELECT ename
5
INTO nom FROM emp
6
WHERE ROWNUM = 1;
7 DBMS_OUTPUT.PUT_LINE(nom);
8 END;
SMITH
PL/SQL procedure successfully completed.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

26

L'Attribut %ROWTYPE
Déclarer une variable à partir d'un
ensemble de colonnes d'une table ou
d'une vue.
Préfixer %ROWTYPE avec la nom de la
table de la base de données.
Les champs dans le RECORD ont les
mêmes noms et les mêmes types de
données que les colonnes de la table ou
de la vue associées.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

27

Exemple
SQL> DECLARE
2 empl emp%ROWTYPE;
3 BEGIN
4
SELECT *
5
INTO empl FROM emp
6
WHERE ROWNUM = 1;
7
DBMS_OUTPUT.PUT_LINE(empl.ename);
8
DBMS_OUTPUT.PUT_LINE(empl.sal);
9 END;
SMITH
800
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

28

Intérêts
Le nombre de colonnes & leur type peuvent
être inconnus.
Le nombre de colonnes & leur type peuvent
changer.
à Utile (sinon indispensable) lorsqu'on recherche
Une ligne avec l'ordre SELECT.
Plusieurs lignes avec un curseur explicite.

DECLARE
dep
empl
.../...

dept%ROWTYPE;
emp%ROWTYPE;

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

29

Opérateurs en PL/SQL
Valeurs de vérité
Arithmétiques
Identiques à SQL
Concaténation
Opérateur exponentiel ( ** )
Parenthèsage pour contrôler la priorité
des opérations

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

30

Fonctions en PL/SQL
Intégrées :
Numériques
Caractères
Conversion de type
Date

Identiques à SQL

Non intégrées :
GREATEST
LEAST
Fonctions de groupe
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

31

Fonctions en PL/SQL Exemples
SQL> DECLARE
2
enr
scott.emp%ROWTYPE;
3
adr
VARCHAR2(64);
4 BEGIN
5
SELECT *
6
INTO enr FROM emp
7
WHERE ROWNUM = 1;
8
adr := UPPER(enr.ename) || CHR(10) ||
9
LOWER(enr.job)
|| CHR(10) ||
10
TO_CHAR(enr.hiredate,'DD/MM/YYYY');
11
DBMS_OUTPUT.PUT_LINE(adr);
12 END;
13 /
SMITH clerk 17/12/1980
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

32

Conversion de Type de
Donnée
Convertir des données en type de données
comparables.
Des types de données hétérogènes peuvent
provoquer une erreur et/ou affecter les
performances.
Fonctions de Conversion :
TO_CHAR
TO_DATE
TO_NUMBER

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

33

Conversion de Type de
Donnée - Exemple
Cette instruction è une erreur :
str

:= Le || ':' || SYSDATE ;

Pour corriger l'erreur on doit appliquer
la fonction de conversion TO_CHAR
str

:= Le || ':' || TO_CHAR( SYSDATE );

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

34

Référencer des Variables Non
PL/SQL
Référencer des variables non PL/SQL
comme des variables « bind » (nouées).
Préfixer ces variables par deux points(:)

VAR [ variable [ NUMBER | CHAR | CHAR (n) | VARCHAR2 (n) |
NCHAR | NCHAR (n) | NVARCHAR2 (n) |
CLOB | NCLOB | REFCURSOR ] ]

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

35

Exemple
SQL> VARIABLE income NUMBER
SQL> DECLARE
2
enr
emp%ROWTYPE;
3
adr
VARCHAR2(64);
4 BEGIN
5
SELECT *
6
INTO enr FROM emp
7
WHERE ROWNUM = 1;
8
:income := enr.sal*12;
9
adr := enr.ename || CHR(10) ||
10
:income|| CHR(10) ||
11
TO_CHAR(enr.hiredate,'DD/MM/YYYY');
12
DBMS_OUTPUT.PUT_LINE(adr);
13 END;
14 /
SMITH
9600
17/12/1980
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

36

Imbrication et Portée d'une
Variable
Les instructions peuvent être imbriquées là où les
instructions exécutables sont autorisées.
La section EXCEPTION peut contenir des blocs
imbriqués.
Les boucles possèdent leur propre portée
les incréments y sont définis

Un identifiant est visible dans les régions où on
peut référencer cet identifiant :
Un bloc voit les objets du bloc de niveau supérieur.
Un bloc ne voit pas les objets des blocs de niveau
inférieur.

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

37

Blocs Imbriqués et Portée
DECLARE
x
INTEGER;
BEGIN
. . .
DECLARE
y
NUMBER;
BEGIN
. . .
END ;
. . .
END ;
/

Portée de x

Portée de y

Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

38

Interaction avec la base
Utiliser les commandes SELECT, INSERT,
UPDATE et DELETE dans un bloc PL/SQL.
Déterminer le résultat des ordres SQL en
utilisant les attributs du curseur implicite.
Contrôler les transactions avec PL/SQL.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

39

Clause INTO
SELECT
INTO
FROM
WHERE

list_attribut
nom_var | nom_record
table
condition;

Cette clause est obligatoire en PL/SQL.
La clause INTO convient si une seule ligne de
données est renvoyée.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

40

Exemple
SQL>
SQL>
2
3
4
5
6
7
8
9
KING

SET SERVEROUTPUT ON
DECLARE
nom scott.emp.ename%TYPE;
BEGIN
SELECT ename INTO nom
FROM scott.emp
WHERE empno = 7839; -- matricule unique & NON NULL
DBMS_OUTPUT.PUT_LINE(nom);
END;
/

PL/SQL procedure successfully completed.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

41

Exemple
SQL> DECLARE
2
rec
scott.emp%ROWTYPE;
3
empl
VARCHAR2(64);
4 BEGIN
5
SELECT *
6
INTO rec FROM emp
7
WHERE ROWNUM = 1;
8
empl :=
UPPER(rec.ename) ||’ ‘||
9
LOWER(rec.job)
||’ ‘||
10
TO_CHAR(rec.hiredate,'DD/MM/YYYY');
11
DBMS_OUTPUT.PUT_LINE(empl);
12 END;
13 /
SMITH clerk 17/12/1980
PL/SQL procedure successfully completed.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

42

Exceptions avec SELECT
Les ordres SELECT en PL/SQL doivent
ramener une et une seule ligne.
Si aucune ou plusieurs lignes sont
retrouvées une exception est
déclenchée.
On peut lever des exceptions avec
PL/SQL
Exceptions de la clause SELECT :

TOO_MANY_ROWS
Nadhemb@yahoo.com NO_DATA_FOUND

Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

43

Exception TOO_MANY_ROWS
SQL> DECLARE
2
nom
scott.emp.ename%TYPE;
3 BEGIN
4
SELECT ename INTO nom
5
FROM scott.emp
6
WHERE deptno = 10;
7
DBMS_OUTPUT.PUT_LINE(nom);
8 END;
9 /
DECLARE
*
ERROR at line 1:
ORA-01422: exact fetch returns more than requested
number of rows
ORA-06512: at line 4
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

44

Exception NO_DATA_FOUND
SQL> DECLARE
2
nom
scott.emp.ename%TYPE;
3 BEGIN
4
SELECT ename INTO nom
5
FROM scott.emp
6
WHERE deptno = 50;
7
DBMS_OUTPUT.PUT_LINE(nom);
8 END;
9 /
DECLARE
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at line 4
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

45

Manipulation de Données
Modifier les tables de la base de données en
utilisant les commandes du LMD et du LCD :
INSERT
UPDATE
DELETE
COMMIT
ROLLBACK
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

46

UPDATE (idem. si
INSERT/DELETE)
SQL>
2
3
4
5
6
7
8
9
10
11
12
13
14
KING

DECLARE
nom
scott.emp.ename%TYPE;
matricule
scott.emp.empno%TYPE := 7839;
salaire
scott.emp.sal%TYPE := 5500;
BEGIN
UPDATE scott.emp SET sal = salaire
WHERE empno = matricule;
SELECT ename ,sal
INTO nom, salaire
FROM scott.emp
WHERE empno = matricule;
DBMS_OUTPUT.PUT_LINE(nom||’ ‘||TO_CHAR(salaire));
END;
/
5500

PL/SQL procedure successfully completed.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

47

Transaction
Une transaction est une unité de travail composé de
plusieurs actions élémentaires.
Chaque transaction est considérée comme atomique
et fait évoluer la base de données d'un état cohérent
vers un autre état cohérent.
Soit une transaction s'exécute correctement et les
modifications qu'elle a engendrées deviennent
publiques et définitives ("Commit"), soit tout se passe
comme si elle n'avait jamais existé ("Rollback").
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

48

Exemple de curseur implicite
SQL> DECLARE
2
-- nombre de lignes mises à jour.
3
nb_ligne
NUMBER := 0;
4 BEGIN
5
UPDATE scott.emp SET sal = sal*1.1
6
WHERE deptno = 30;
7
nb_ligne := SQL%ROWCOUNT;
8
DBMS_OUTPUT.PUT_LINE(ligne||’ ligne(s)’);
9
ROLLBACK;
10 END;
11 /
6 ligne(s)
PL/SQL procedure successfully completed.
Nadhemb@yahoo.com
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer

49


Documents similaires


Fichier PDF xy0lknz
Fichier PDF create or replace trigger triggeer
Fichier PDF tp2 plsql correction
Fichier PDF create mew wallet
Fichier PDF eye spy 3ds max eye tutorial by cymae
Fichier PDF 1ststepswithteklastructures stepbystep


Sur le même sujet..