Vous êtes sur la page 1sur 6

TP 2: PL/SQL

Partie 1: Bloc Anonyme


DECLARE

date_aujourdhui DATE;

reel1 NUMBER := 44.5;

reel2 NUMBER := 61.8;

liste1 VARCHAR2(50) := '1, 2, 3, 4, 5, 6, 7, 8, 9, 10';

liste2 VARCHAR2(50) := '100, 98, 96, 94, 92, 90...0';

entier1 NUMBER;

entier2 NUMBER;

entier3 NUMBER;

factoriel NUMBER := 1;

BEGIN

date_aujourdhui := SYSDATE;

DBMS_OUTPUT.PUT_LINE('La date d''aujourd''hui est : '|| date_aujourdhui);

DBMS_OUTPUT.PUT_LINE('La somme de '|| reel1 ||' et '|| reel2 ||' est : '|| (reel1+reel2));

DBMS_OUTPUT.PUT_LINE('La première liste entière est : '|| liste1);

DBMS_OUTPUT.PUT_LINE('La deuxième liste entière est : '|| liste2);

entier1 := &entier1;

entier2 := &entier2;

DBMS_OUTPUT.PUT_LINE('La somme de '|| entier1 ||' et '|| entier2 ||' est : '|| (entier1+entier2));

DBMS_OUTPUT.PUT_LINE('Le produit de '|| entier1 ||' et '|| entier2 ||' est : '|| (entier1*entier2));

entier1 := &entier1;

entier2 := &entier2;

entier3 := &entier3;

IF entier3 < entier2 AND entier2 < entier1 THEN

DBMS_OUTPUT.PUT_LINE('C < B < A');

END IF;

entier1 := &entier1;

factoriel := 1;
FOR i IN 1..entier1 LOOP

factoriel := factoriel*i;

END LOOP;

DBMS_OUTPUT.PUT_LINE('Le factoriel de '|| entier1 ||' est : '|| factoriel);

END;

DECLARE

date_aujourdhui DATE;

reel1 NUMBER := 44.5;

reel2 NUMBER := 61.8;

liste1 VARCHAR2(50) := '1, 2, 3, 4, 5, 6, 7, 8, 9, 10';

liste2 VARCHAR2(50) := '100, 98, 96, 94, 92, 90...0';

entier1 NUMBER;

entier2 NUMBER;

entier3 NUMBER;

factoriel NUMBER := 1;

BEGIN

date_aujourdhui := SYSDATE;

DBMS_OUTPUT.PUT_LINE('La date d''aujourd''hui est : '|| date_aujourdhui);

DBMS_OUTPUT.PUT_LINE('La somme de '|| reel1 ||' et '|| reel2 ||' est : '|| (reel1+reel2));

DBMS_OUTPUT.PUT_LINE('La première liste entière est : '|| liste1);

DBMS_OUTPUT.PUT_LINE('La deuxième liste entière est : '|| liste2);

entier1 := &entier1;

entier2 := &entier2;

DBMS_OUTPUT.PUT_LINE('La somme de '|| entier1 ||' et '|| entier2 ||' est : '|| (entier1+entier2));

DBMS_OUTPUT.PUT_LINE('Le produit de '|| entier1 ||' et '|| entier2 ||' est : '|| (entier1*entier2));

entier1 := &entier1;

entier2 := &entier2;

entier3 := &entier3;

IF entier3 < entier2 AND entier2 < entier1 THEN


DBMS_OUTPUT.PUT_LINE('C < B < A');

END IF;

entier1 := &entier1;

factoriel := 1;

FOR i IN 1..entier1 LOOP

factoriel := factoriel*i;

END LOOP;

DBMS_OUTPUT.PUT_LINE('Le factoriel de '|| entier1 ||' est : '|| factoriel);

END;

Partie 2: Les Structures

1. Calculer et afficher la factorielle d'un réel saisi par l'utilisateur :

DECLARE
num NUMBER;
fact NUMBER := 1;
BEGIN
num := &num_input; -- lecture de l'entrée utilisateur
IF (num < 0) THEN
dbms_output.put_line('Erreur : le nombre doit être positif ou nul');
ELSE
FOR i IN 1..num LOOP
fact := fact * i;
END LOOP;
dbms_output.put_line('Factorielle de ' || num || ' : ' || fact);
END IF;
END;

2. Afficher la longueur d'une chaîne de caractère saisie par l'utilisateur :

DECLARE
str VARCHAR2(100);
len NUMBER;
BEGIN
str := '&str_input'; -- lecture de l'entrée utilisateur
len := LENGTH(str);
dbms_output.put_line('Longueur de la chaine ' || str || ' : ' || len);
END;
3. Ecrire un bloc anonyme PL/SQL permettant de vérifier si un caractère « c » saisi existe ou
pas dans une chaine « Y » saisie par l’utilisateur.

DECLARE
str VARCHAR2(100);
c CHAR(1);
BEGIN
str := '&str_input'; -- lecture de l'entrée utilisateur pour la chaîne
c := '&char_input'; -- lecture de l'entrée utilisateur pour le caractère
IF (INSTR(str, c) > 0) THEN
dbms_output.put_line('Le caractere ' || c || ' existe dans la chaine ' || str);
ELSE
dbms_output.put_line('Le caractere ' || c || ' n''existe pas dans la chaine ' || str);
END IF;
END;

Partie 3: Type Composé.


1. Ecrire un bloc anonyme PL/SQL permettant d’afficher la somme des réels d’un tableau

déclaré et initialisé dans la section DECLARATION.

DECLARE

TYPE t_tab IS TABLE OF NUMBER;

my_tab t_tab := t_tab(2.5, 3.8, 1.2, 4.7, 5.6);

total NUMBER := 0;

BEGIN

FOR i IN my_tab.FIRST .. my_tab.LAST LOOP

total := total + my_tab(i);

END LOOP;

DBMS_OUTPUT.PUT_LINE('La somme des réels du tableau est : ' || total);

END;
2. Ecrire un bloc anonyme PL/SQL permettant de supprimer des réels à partir d’un tableau

prédéfini et de le réafficher.

DECLARE

TYPE t_tab IS TABLE OF NUMBER;

my_tab t_tab := t_tab(2.5, 3.8, 1.2, 4.7, 5.6);

BEGIN

FOR i IN my_tab.FIRST .. my_tab.LAST LOOP

IF MOD(my_tab(i), 2) = 0 THEN -- On supprime les nombres pairs

my_tab.DELETE(i);

END IF;

END LOOP;

FOR i IN my_tab.FIRST .. my_tab.LAST LOOP

DBMS_OUTPUT.PUT_LINE('Elément ' || i || ' : ' || my_tab(i));

END LOOP;

END;

3. Ecrire un bloc anonyme PL/SQL permettant d’afficher la table de multiplication par 5 et

par 6

DECLARE

i NUMBER := 1;

BEGIN

DBMS_OUTPUT.PUT_LINE('Table de multiplication par 5 :');

WHILE i <= 10 LOOP

DBMS_OUTPUT.PUT_LINE('5 * ' || i || ' = ' || 5*i);

i := i + 1;

END LOOP;

i := 1;
DBMS_OUTPUT.PUT_LINE('Table de multiplication par 6 :');

WHILE i <= 10 LOOP

DBMS_OUTPUT.PUT_LINE('6 * ' || i || ' = ' || 6*i);

i := i + 1;

END LOOP;

END;

Vous aimerez peut-être aussi