Cours Plsql Def

77
PROGRAMMATION PL/SQL OUELBANI FOUED SGBD 2008-2009

Transcript of Cours Plsql Def

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