Upload
nouri-hamza
View
58
Download
0
Embed Size (px)
Citation preview
PROGRAMMATION PL/SQL
OUELBANI FOUED
SGBD
2008-2009
STRUCTURE DUN PROGRAMME PL/SQLDECLARE Optionnel BEGIN Obligatoire.
DECLARATION EXECUTABLE
EXCEPTION Optionnel END- Obligatoire;
/2008-2009
OUELBANI FOUED
SGBD
2
EXEMPLE DUN BLOC PL/SQLEXEMPLEDECLARE v_ename varchar(20); BEGIN Select ename into v_ename from emp where empno=7839; END ; / Placer un point virgule (;) la fin de dune instruction SQL ou PL/SQL Utiliser un slash (/) pour excuter un bloc PL/SQL anonyme
OUELBANI FOUED
SGBD
2008-2009
3
SECTION : DECLARATION Dbute par le mot DECLARE et permet la dclaration des variables et constantes. EXEMPLE No_Produit Dsignation PU Number ; VARCHAR2(20) ; NUMBER(6,2) := 100.00;
OUELBANI FOUED
SGBD
2008-2009
4
SECTION EXECUTABLE : BEGIN.ENDIntgre diffrents types dinstructions : Instruction daffectation Instruction de contrle de flux Instruction SQL Instruction curseur
OUELBANI FOUED
SGBD
2008-2009
5
SECTION : GESTION DES EXCEPTIONSTraite les erreurs qui se produisent pendant lexcution dun programme PL/SQL Peut tre prdfinie : DUP_VAL_ON_INDEX : insertion dune cl duplique NO_DATA_FOUND : instruction select ne retournant aucune ligne ... Peut tre dfinie : traiter par le programmeur.
OUELBANI FOUED
SGBD
2008-2009
6
TYPES DE BLOCS PL/SQLBlocs anonymes Blocs PL/SQL non nomms, imbriqus dans une application ou crs de faon interactive. Ils sont dclars dans une application lendroit de leur excution. Ils sont disponibles dans tous les environnements PL/SQL.
[DECLARE ] BEGIN [EXCEPTION ] END ;
OUELBANI FOUED
SGBD
2008-2009
7
TYPES DE BLOCS PL/SQLProcdures et fonctions stockes Blocs PL/SQL nomms et stockes sous forme dobjet de base de donnes. Rsident sur le serveur Oracle. Peuvent utiliser des paramtres dentre et de sortie. Sont invoques dune manire rptitive. FUNCTION nom(paramtres) RETURN type_donne IS BEGIN [EXCEPTION] END
PROCEDURE nom (paramtres) IS BEGIN [EXCEPTION] END ;
OUELBANI FOUED
SGBD
2008-2009
8
CONSTRUCTION DUN PROGRAMMEType de construction Bloc Anonyme Description Bloc PL/SQL sans nom dans une application ou excut dune faon intractive Bloc PL/SQL nomm, stock sur le serveur oracle et acceptant des paramtres Bloc PL/SQL nomm, stock dans une application oracle Developer ou une librairie partage acceptant des paramtres Disponibilit Tous les environnements PL/SQL
Procdure ou Fonction stocke Procdure ou Fonction applicative
Serveur Oracle
Produits Oracle Developer (FORMS)
Package
Module PL/SQL nomm regroupant des procdures, des fonctions et des variables
Serveur oracle et les produits Oracle Developer (FORMS)
Trigger bas
Bloc PL/SQL associ une table, qui se dclenche automatiquement sur une instruction LMDBloc PL/SQL associ un vnement dans une application avec un dclencheur
Serveur Oracle
Trigger applicatif
Produits Oracle Developer (FORMS)
OUELBANI FOUED
SGBD
2008-2009
9
GESTION DES VARIABLES Les variables sont dclares et initialises dans la section
dclaratives De nouvelles valeurs sont affectes aux variables dans la section excutable Passage des valeurs des programmes par lintermdiaire de paramtres
OUELBANI FOUED
SGBD
2008-2009
10
DECLARATION DES VARIABLES Suivre des conventions de dnomination Initialiser les variables dfinies avec la contrainte NOT NULL Initialisation laide de loprateur daffectation (:=) ou du mot rserv DEFAULT Dclarer un seul identifiant par ligne Dclarer une constante en utilisant le mot cl CONSTANT
OUELBANI FOUED
SGBD
2008-2009
11
REGLES DE DENOMINATION Deux variables peuvent porter le mme nom si elles sont dans des blocs distincts Les noms des variables doivent tre diffrents des noms des colonnes et des tables utiliss dans le bloc. Lidentifiant ne doit pas dpasser 30 caractres. Le premier caractre doit tre une lettre, les autres peuvent tre des lettres, des nombres ou des caractres spciaux.
OUELBANI FOUED
SGBD
2008-2009
12
VARIABLE PL/SQL INTEGER -- max 38chiffres NUMBER -- max 125 chiffres BINARY_INTEGER : -2147483647 - +2147483647 NATURAL :0 - 2147483647 POSITIVE : 1 - 2147483647 CHAR;-- Max 32767 caractres VARCHAR2; -- Max 32767 caractres LONG; -- Max 2147483647 caractres DATE; -- 4712 avant AVJC 9999 APJC BOOLEAN :TRUE,FALSE,NULL %TYPE : type de variable quivalent au type de colonne dune table ou dune autre variable %ROWTYPE : type de variable quivalent une ligne dune table
OUELBANI FOUED
SGBD
2008-2009
13
DECLARATION DES VARIABLESEXEMPLESDeclare v_remise CONSTANT real := 0.10; v_hiredate date; g_deptno number(2) NOT NULL := 10; v_integer integer; -- max 38chiffres v_number1 number; -- max 125 chiffres v_number2 number(38,3); v_bool boolean; -- valeurs possibles TRUE, FALSE, NULL et NOT NULL v_char char(5);-- Max 32767 caractres v_varchar2 varchar2(20); -- Max 32767 caractres v_long LONG; -- Max 2147483647 caractres v_date date; -- Les dates peuvent aller de -4712 avant AVJC 9999 APJC
OUELBANI FOUED
SGBD
2008-2009
14
DECLARATION DES VARIABLESEXEMPLESDeclare v_ename emp.ename%type; v_emp emp%rowtype; v_n1 number(5,3); V_n2 v_n1%type;
OUELBANI FOUED
SGBD
2008-2009
15
INITIALISATION DES VARIABLES Oprateur daffectation (:=) Mot cl DEFAULT Contrainte NOT NULL
EXEMPLESv_integer integer := 12345; v_bool Boolean :=TRUE; v_char varchar(30) NOT NULL := 'SGBD'; v_date date DEFAULT '01-Janv.-2009';
OUELBANI FOUED
SGBD
2008-2009
16
AFFECTATION DES VALEURS AUX VARIABLES Oprateur daffectation (:=) Mot cl DEFAULT Contrainte NOT NULL Identifiant := expr;
EXEMPLES BEGIN v_integer := 12345; v_number1 := 1234567.453; v_number2 := 1.9999E+125; v_bool :=TRUE; v_char := 'SGBD'; v_long := 'Cours PL/SQL'; v_date := '21-fvr.-2008'; END;OUELBANI FOUED SGBD 2008-2009
17
PORTEE DES VARIABLESEXEMPLEDECLARE v1 integer := 100; v2 varchar(5) :='A'; BEGIN DECLARE v1 integer; v3 varchar2(10):=v2||'1'; v4 varchar2(10):='B'; BEGIN dbms_output.put_line('v1(1) =' || v1 || chr(10) || 'v2(1) =' || v2 || chr(10) || 'v3(1) =' || v3); END; dbms_output.put_line('v1(2) =' || v1 || chr(10) || 'v2(2) =' || v2); dbms_output.put_line('v3(2) =' || v3); END; /
OUELBANI FOUED
SGBD
2008-2009
18
STRUCTURES DE CONTRLE : IF THEN ELSE IF condition THEN instructions; END IF; IF condition THEN instructions1;
ELSE instructions2; END IF; IF condition1 THEN instructions1; ELSIF condition2; THEN instructions2;
ELSIF ... ELSE instructionsN; END IF;
OUELBANI FOUED
SGBD
2008-2009
19
STRUCTURES DE CONTRLE : IF THEN ELSEEXEMPLESDECLARE v1 integer := 1100; v2 integer := 200; BEGIN IF v1 < v2 THEN dbms_output.put_line('v1 < v2'); ELSE dbms_output.put_line('v2