0% ont trouvé ce document utile (0 vote)
35 vues5 pages

II. Programmation en PLSQL Oracle Commandes de Base

Le document décrit les commandes de base de la programmation en PL/SQL Oracle, notamment la syntaxe des variables simples et structurées, les types de données comme les records, les tableaux et les curseurs. Il présente également des exemples d'utilisation des structures de contrôle comme les boucles for, while et repeat.

Transféré par

Rania Boudra
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
35 vues5 pages

II. Programmation en PLSQL Oracle Commandes de Base

Le document décrit les commandes de base de la programmation en PL/SQL Oracle, notamment la syntaxe des variables simples et structurées, les types de données comme les records, les tableaux et les curseurs. Il présente également des exemples d'utilisation des structures de contrôle comme les boucles for, while et repeat.

Transféré par

Rania Boudra
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation en PL/SQL Oracle – commandes de base

1. Syntaxe, variables simples et variables structurées.


1- v_id NUMBER(4); 7- v_nom Emp.nom_emp%TYPE;
(v_nom prend le type de la colonne nom_emp de la table Emp).

2- v_x VARCHAR2(10); 8- rty_employe Emp%ROWTYPE;


(La structure rty_employe est composée de toutes les colonnes de
la table Emp).
2- v_date_naissance DATE NOT NULL :=01/01/2023; 9- TYPE rec_ avionAirbus IS RECORD ( nserie
CHAR(10),
nomAvion CHAR(20), usine CHAR(10) := 'Blagnac', nbHVol
NUMBER(7,2));
R_A320 rec _avionAirbus ;
4- v_en_stock BOOLEAN := true ; 10- TYPE tytab_ brevets IS TABLE OF VARCHAR2(6)
INDEX BY BINARY_INTEGER;

5- TYPE type_table_nom IS TABLE OF VARCHAR2(20) 11- TYPE tytab_ nom_employes IS TABLE OF


INDEX BY BINARY_INTEGER; Emp.nom_emp%TYPE
dept_table_nom type_table_nom; INDEX BY BINARY_INTEGER;

ACCEPT id_emp PROMPT 'Entrer un numéro d’un set serveroutput on 10- TYPE tytab_ employes IS TABLE OF
employé :' ; accept vstring prompt "Please enter your name: ";
DECLARE declare Emp%ROWTYPE
v_line varchar2(40); INDEX BY VARCHAR2(4);
BEGIN begin
v_line := 'Hello '||'&vstring';
…. WHERE var = &id_emp;……. dbms_output.put_line(v_line);
END; end;
/
/
set serveroutput on;
DECLARE
TYPE nomRecord IS RECORD
( nomChamp typeDonnées [[NOT NULL] { :=| DEFAULT} expression] [, Variable…….
nomChamp typeDonnées… ]… );
BEGIN
rec_exemple nomRecord ; dbms_output.put_line (variable) ;
END ;
/

CURSOR nomCurseur IS requête ; SET SERVEROUTPUT ON;


Open nomCurseur; DECLARE
FETCH nomCurseur INTO listeVariables | nomRECORD; var BOOLEAN:=true;
…. BEGIN
Close nomCurseur; dbms_output.put_line(
case
when var then 'TRUE'
when var is null then 'NULL'
else 'FALSE'
end
);
END;
/
--affichage d’une variable de type booléen.

-- Structure d’un bloc anonyme


2. Exemples : bloc anonyme, types structurés, boucles et structure conditionnelles.
--Utilisations de %ROWTYPE -- Manipulation de RECORD

DECLARE DECLARE
rty_pilote Pilote%ROWTYPE; TYPE avionAirbus_rec IS RECORD
v_brevet [Link]%TYPE; (nserie CHAR(10), nomAvion CHAR(20),
BEGIN usine CHAR(10) := 'Blagnac',
SELECT * INTO rty_pilote nbHVol NUMBER(7,2));
FROM Pilote WHERE
brevet='PL-1'; r_unA320 avionAirbus_rec;
v_brevet := rty_pilote.brevet; r_FGLFS avionAirbus_rec;
… BEGIN
rty_pilote.brevet := 'PL-9'; r_unA320.nserie := 'A1';
rty_pilote.nom := 'Pierre Bazex'; r_unA320.nomAvion := 'A320-200';
… r_unA320.nbHVol := 2500.60;
INSERT INTO Pilote VALUES r_FGLFS := r_unA320;
rty_pilote; …
--Boucle FOR (gestion semi- --Curseur temporaire
automatique)
L’utilisation d’une boucle FOR de BEGIN
curseur facilite la programmation FOR enreg IN
(évite les directives OPEN, FETCH et (SELECT brevet, nom FROM Pilote WHERE
CLOSE). NOT (comp = 'AF')) LOOP
DBMS_OUTPUT.PUT_LINE('nom : ' || [Link] || '
DECLARE (' || [Link] || ').');
CURSOR zone3 IS SELECT brevet, END LOOP;
nom END;
FROM Pilote WHERE NOT /
(comp='AF');
BEGIN
FOR enreg IN zone3 LOOP
DBMS_OUTPUT.PUT_LINE('nom
: ' || [Link] ||
' (' || [Link] || ').');
END LOOP;
END;
/
--Tableau associatif --Utilisation de %TYPE
DECLARE
TYPE nomPilotes_tytab IS TABLE DECLARE
OF [Link]%TYPE v_brevet [Link]%TYPE;
INDEX BY BINARY_INTEGER; v_prime NUMBER(5,2) := 500.50;
v_prime_min v_prime%TYPE := v_prime*0.9;
tab_nomPilote nomPilotes_tytab
BEGIN
CURSOR zone4 IS SELECT brevet, …
nom End ;
FROM Pilote WHERE comp = /
'AF';
i NUMBER := 1;
BEGIN
FOR enreg IN zone4 LOOP
tab_nomPilote(i) := [Link];
i := i + 1;
END LOOP;

DBMS_OUTPUT.PUT_LINE('2ème
pilote : ' ||
tab_nomPilote(2));
END;
/
--Structures répéter
--Structures répéter DECLARE
v_somme NUMBER(4) := 0;
v_entier NUMBER(3) := 1;
LOOP BEGIN
instructions; LOOP
EXIT [WHEN c o n d i t i o n ] ; v_somme := v_somme+v_entier;
instructions; v_entier := v_entier + 1;
END LOOP ; EXIT WHEN v_entier > 100;
END LOOP
DBMS_OUTPUT.PUT_LINE ('Somme = ' || v_somme);
END;
/
-- Structures pour
DECLARE
-- Structures pour v_somme NUMBER(4) := 0;
BEGIN
FOR v a r i a b l e IN [ REVERSE FOR v_entier IN 1..100
] debut.. fin LOOP
LOOP v_somme := v_somme+v_entier;
instructions; END LOOP;
END LOOP ;
DBMS_OUTPUT.PUT_LINE ('Somme = ' || v_somme);
END;
/
--Structures tant que

--Structures tant que DECLARE


v_somme NUMBER(4) := 0;
v_entier NUMBER(3) := 1;
WHILE c o n d i t i o n LOOP BEGIN
instructions; WHILE (v_entier <= 100)
END LOOP ; LOOP
v_somme := v_somme+v_entier;
v_entier := v_entier + 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE ('Somme = ' || v_somme);
END;
/
DECLARE
v_mention CHAR(2);
--Structures CASE v_note NUMBER(4,2) := 9.8;
BEGIN
[<<étiquette>>]
CASE variable CASE
WHEN expr1 THEN instructions1; WHEN v_note >= 16 THEN v_mention := 'TB';
WHEN expr2 THEN WHEN v_note >= 14 THEN v_mention := 'B';
instructions2; WHEN v_note >= 12 THEN v_mention := 'AB';
… WHEN v_note >= 10 THEN v_mention := 'P';
WHEN exprN THEN ELSE v_mention := 'R’ ;
instructionsN; END CASE;
[ELSE instructionsN+1;]
END CASE [étiquette]; END;
/
DECLARE

v_téléphone CHAR(14) NOT NULL := '06-76-85-14-89';


IF condition THEN BEGIN
instructions; IF SUBSTR(v_téléphone,1,2)='06’
ELSE THEN
instructions; DBMS_OUTPUT.PUT_LINE ('C'est un portable!');
END IF; ELSE
DBMS_OUTPUT.PUT_LINE ('C'est un fixe…');
END IF;
END;
/

DECLARE
IF condition1 THEN v_mention CHAR(2);
instructions; v_note NUMBER(4,2) := 9.8;
ELSIF condition2 THEN BEGIN
instructions; IF v_note >= 16 THEN v_mention := 'TB';
ELSE ELSIF v_note >= 14 THEN v_mention := 'B';
instructions; ELSIF v_note >= 12 THEN v_mention := 'AB';
END IF; ELSIF v_note >= 10 THEN v_mention := 'P';
ELSE v_mention := 'R‘ ;
END IF;
END ;
/

Curseur

IF condition THEN
Instructions;
END IF;
.3. Fonctions pour les tableaux.

Conventions recommandées

Vous aimerez peut-être aussi