Академический Документы
Профессиональный Документы
Культура Документы
Objectifs
3-2
1
Contenu du TP
3-3
3-4
2
Syntaxe des blocs PL/SQL et règles à respecter
• Littéraux
– Les littéraux de type caractère et date doivent être placés entre
apostrophes.
– Les nombres peuvent être des valeurs simples ou utiliser une notation
scientifique.
v_name := 'Henderson';
• Mise en forme du code : Les instructions peuvent s'étendre sur
plusieurs lignes.
3-5
3-6
3
Fonctions SQL dans le code PL/SQL
3-8
4
Utiliser des séquences dans des expressions PL/SQL
3-9
3 - 10
5
Exemple de conversion implicite
DECLARE
v_salary NUMBER(6):=6000;
v_sal_hike VARCHAR2(5):='1000';
v_total_salary v_salary%TYPE;
BEGIN
v_total_salary:=v_salary + v_sal_hike;
dbms_output.put_line (v_total_salary);
END;
/
3 - 11
3 - 12
6
Contenu du TP
3 - 13
Blocs imbriqués
3 - 14
7
Blocs imbriqués : Exemple
DECLARE
v_outer_variable VARCHAR2(20):='GLOBAL VARIABLE';
BEGIN
DECLARE
v_inner_variable VARCHAR2(20):='LOCAL VARIABLE';
BEGIN
DBMS_OUTPUT.PUT_LINE(v_inner_variable);
DBMS_OUTPUT.PUT_LINE(v_outer_variable);
END;
DBMS_OUTPUT.PUT_LINE(v_outer_variable);
END;
3 - 15
DECLARE
v_father_name VARCHAR2(20):='Patrick';
v_date_of_birth DATE:='20-Apr-1972';
BEGIN
DECLARE
v_child_name VARCHAR2(20):='Mike';
v_date_of_birth DATE:='12-Dec-2002';
BEGIN
DBMS_OUTPUT.PUT_LINE('Father''s Name: '||v_father_name);
DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth);
DBMS_OUTPUT.PUT_LINE('Child''s Name: '||v_child_name);
END;
DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth);
END;
/
3 - 16
8
Exercice
Begin
Declare
Ch1 varchar2 (10) := 'Phrase 2';
Begin
dbms_output.put_line ('Ch1 = ' || Ch1);
End ;
dbms_output.put_line ('Ch1 = ' || Ch1);
End ;
/
3 - 17
BEGIN <<outer>>
DECLARE
v_father_name VARCHAR2(20):='Patrick';
v_date_of_birth DATE:='20-Apr-1972';
BEGIN
DECLARE
v_child_name VARCHAR2(20):='Mike';
v_date_of_birth DATE:='12-Dec-2002';
BEGIN
DBMS_OUTPUT.PUT_LINE('Father''s Name: '||v_father_name);
DBMS_OUTPUT.PUT_LINE('Date of Birth: '
||outer.v_date_of_birth);
DBMS_OUTPUT.PUT_LINE('Child''s Name: '||v_child_name);
DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth);
END;
END;
END outer;
3 - 18
9
Problème : Déterminer la portée des variables
BEGIN <<outer>>
DECLARE
v_sal NUMBER(7,2) := 60000;
v_comm NUMBER(7,2) := v_sal * 0.20;
v_message VARCHAR2(255) := ' eligible for commission';
BEGIN
DECLARE
v_sal NUMBER(7,2) := 50000;
v_comm NUMBER(7,2) := 0;
v_total_comp NUMBER(7,2) := v_sal + v_comm;
BEGIN
1 v_message := 'CLERK not'||v_message;
outer.v_comm := v_sal * 0.30;
END;
2 v_message := 'SALESMAN'||v_message;
END;
END outer;
/
3 - 19
Contenu du TP
3 - 20
10
Opérateurs en langage PL/SQL
• Opérateurs logiques
• Opérateurs arithmétiques
• Opérateur de concaténation Identiques en
• Parenthèses permettant de langage SQL
contrôler l'ordre des opérations
3 - 21
3 - 22
11
Règles de programmation
3 - 23
Indenter le code
BEGIN DECLARE
IF x=0 THEN y:=1; deptno NUMBER(4);
END IF; locatno NUMBER(4);
END; BEGIN
/ SELECT department_id, location_id
INTO deptno, locatno
FROM departments
WHERE department_name = 'Sales';
...
END;
/
3 - 24
12
Quiz
3 - 25
Synthèse
Ce TP a permis d'apprendre à :
• identifier les unités lexicales d'un bloc PL/SQL
• utiliser des fonctions SQL intégrées dans du code PL/SQL
• écrire des blocs imbriqués afin de fractionner des
fonctionnalités liées logiquement
• déterminer dans quels cas effectuer des conversions
explicites
• qualifier des variables dans les blocs imbriqués
• utiliser des séquences dans des expressions PL/SQL
3 - 26
13