You are on page 1of 4

Base de données II et Web

Série n°2 : Introduction au PL/SQL, Tableau et Structure, Procédure, Fonction

Exercise 1:

DECLARE
a numeric;
b numeric;
c numeric;

BEGIN

a := 1;
b := 2;

DBMS_OUTPUT.PUT_LINE('values of a : ' || a);


DBMS_OUTPUT.PUT_LINE('values of b : ' || b);

c := a;
a := b;
b := c;

DBMS_OUTPUT.PUT_LINE('values of a : ' || a);


DBMS_OUTPUT.PUT_LINE('values of b : ' || b);

END;

Exercise 2:

DECLARE

a number;
i number;
fact number:=1;

BEGIN

a := 10;

FOR i IN 1..a LOOP


fact:=fact*i;
END LOOP;

DBMS_OUTPUT.PUT_LINE('factorialle de ' || a || ' est : ' || fact);

END;
Exercise 3:
DECLARE

a number;
b number;

BEGIN

a := 48;
b := 84;

WHILE a*b <> 0 LOOP

IF a > b THEN
a := a-b;
ELSE
b := b-a;
END IF;

END LOOP;

IF a = 0 THEN
DBMS_OUTPUT.PUT_LINE('pdgc = ' || b);
ELSE
DBMS_OUTPUT.PUT_LINE('pdgc = ' || a);
END IF;

END;

Exercise 4:

DECLARE

TYPE table_50 is VARRAY(50) OF NUMBER;


a table_50;
b NUMBER;
i NUMBER:=1;
j number:=1;
BEGIN

a:=table_50();
a.EXTEND(20);

FOR i IN 1..20 LOOP


a(i) := i*i;
END LOOP;

FOR i IN 1..20 LOOP


FOR j in 19..1 LOOP

b := a(j);
a(j) := a(i);
a(i) := b;

END LOOP;
END LOOP;
FOR i IN 1..20 LOOP
DBMS_OUTPUT.PUT_LINE(a(i));
END LOOP;

END;

Exercise 5:

DECLARE

TYPE Rclient IS RECORD(


numc client.numcli%type,
nom client.nom%type,
prenom client.prenom%type,
daten client.datenaiss%type,
rue client.rue%type,
cp client.cp%type,
ville client.ville%type
);

cl Rclient;

BEGIN

SELECT * INTO cl FROM client


WHERE
datenaiss = TO_DATE('1988/12/14','yyyy/mm/dd');

DBMS_OUTPUT.PUT_LINE(cl.nom);

END;
Exercise 6:

CREATE FUNCTION PRIX_TTC(numc client.numcli%TYPE) IS RETURN NUMBER AS PT


NUMBER(8,2);

CURSOR PRIXT(N client.numcli%TYPE) IS


SELECT SUM(mttc)
FROM client_cmd WHERE ncli = N
GROUP BY ncli;

BEGIN

OPEN PRIXT(numc);
CLOSE PRIXT;

RETURN PT;
END;

CREATE OR REPLACE PROCEDURE Cli_prod(design produit.desig%TYPE) IS


name varchar(20);
CURSOR c(d produit.desig%TYPE) IS
SELECT c.nom
FROM commande co INNER JOIN client c ON co.numcli=c.numcli
WHERE co.numprod IN
( SELECT numprod FROM produit WHERE desig = d );
BEGIN
OPEN c(design);
LOOP
FETCH c INTO name;
EXIT WHEN c%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(name);
END LOOP;
CLOSE c;
END;

You might also like