dhgfhuje
This commit is contained in:
BIN
BD/Lekpa/2_TP_PLSQL.pdf
Normal file
BIN
BD/Lekpa/2_TP_PLSQL.pdf
Normal file
Binary file not shown.
141
BD/Lekpa/tp02.txt
Normal file
141
BD/Lekpa/tp02.txt
Normal file
@@ -0,0 +1,141 @@
|
||||
execice 1
|
||||
|
||||
create or replace function fn_points_fidelite(Id_client Number)
|
||||
return Number
|
||||
IS
|
||||
V_pt_fidelite number;
|
||||
Begin
|
||||
Select sum(L.prix_total) Into V_pt_fidelite
|
||||
from ligne_Commande L, Commande CO
|
||||
where L.commande_id = CO.id AND CO.client_id = Id_client;
|
||||
V_pt_fidelite := floor(V_pt_fidelite/10);
|
||||
return V_pt_fidelite;
|
||||
Exception
|
||||
when No_data_found then
|
||||
return 0;
|
||||
end fn_points_fidelite;
|
||||
|
||||
select fn_points_fidelite(16) from dual;
|
||||
|
||||
|
||||
declare
|
||||
cursor C_client IS Select id, nom from client;
|
||||
V_points number;
|
||||
Begin
|
||||
for v_client in c_client
|
||||
loop
|
||||
v_points := fn_points_fidelite(v_client.id);
|
||||
if (v_points < 2) then
|
||||
DBMS_OUTPUT.PUT_LINE(v_client.nom || 'à' || v_points || 'point de fidelité' );
|
||||
else
|
||||
DBMS_OUTPUT.PUT_LINE(v_client.nom || 'à' || v_points || 'points de fidelités' );
|
||||
end if;
|
||||
end loop;
|
||||
end;
|
||||
|
||||
//--------------------------------------------------
|
||||
select nom || 'à' || fn_points_fidelite(id) ||
|
||||
case
|
||||
when fn_points_fidelite(id) < 2 then
|
||||
'point de fidelité';
|
||||
else
|
||||
'points de fidelités';
|
||||
end
|
||||
from client;
|
||||
|
||||
//---------------!!!!!!!!!!!!!!!!!!!----------------------------
|
||||
|
||||
|
||||
|
||||
exercice 2
|
||||
|
||||
create or replace trigger trg_DeleteCommande
|
||||
Before delete
|
||||
on Commande
|
||||
for each row
|
||||
begin
|
||||
delete from ligne_commande L where L.commande_id = :old.id;
|
||||
end trg_DeleteCommande;
|
||||
|
||||
---------------------verification-----------------------------
|
||||
select * from Commande CO, ligne_commande L where CO.id = 16 AND CO.id = L.commande_id;
|
||||
|
||||
ID CLIENT_ID DATE_ACHA REFERENCE ID COMMANDE_ID PRODUIT_ID QUANTITE PRIX_TOTAL
|
||||
---------- ---------- --------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- ----------- ---------- ---------- ----------
|
||||
16 15 18-JAN-19 008974 33 16 2 4 400.4
|
||||
|
||||
delete Commande where id=16;
|
||||
select * from ligne_commande L where L.commande_id = 16;
|
||||
no rows selected
|
||||
|
||||
|
||||
|
||||
|
||||
exercice 3
|
||||
|
||||
create or replace trigger trg_DeleteClient
|
||||
Before delete
|
||||
on Client
|
||||
for each row
|
||||
begin
|
||||
delete from Commande CO where CO.client_id = :old.id;
|
||||
end trg_DeleteCommande;
|
||||
|
||||
|
||||
exercice 4
|
||||
|
||||
create table Client_His as select * from Client;
|
||||
delete from Client_His;
|
||||
|
||||
create or replace trigger trg_DeleteClient
|
||||
before delete
|
||||
on Client
|
||||
for each row
|
||||
begin
|
||||
delete from Commande CO where CO.client_id = :old.id;
|
||||
insert into Client_His values (:old.id, :old.prenom, :old.nom, :old.email, :old.ville);
|
||||
end trg_DeleteCommande;
|
||||
|
||||
|
||||
exercice 5
|
||||
|
||||
la contrainte de suppression en cascade
|
||||
|
||||
|
||||
|
||||
exercice 6
|
||||
|
||||
drop table Client cascade constraints;
|
||||
drop table Commande cascade constraints;
|
||||
drop table ligne_commande cascade constraints;
|
||||
|
||||
CREATE TABLE client (
|
||||
id INT PRIMARY KEY,
|
||||
prenom VARCHAR(255),
|
||||
nom VARCHAR(255),
|
||||
email VARCHAR(255),
|
||||
ville VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE commande (
|
||||
id INT PRIMARY KEY,
|
||||
client_id INT,
|
||||
date_achat DATE,
|
||||
reference VARCHAR(255),
|
||||
FOREIGN KEY (client_id) REFERENCES client(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE ligne_commande (
|
||||
id INT PRIMARY KEY,
|
||||
commande_id INT,
|
||||
produit_id INT,
|
||||
quantite INT,
|
||||
prix_total DECIMAL(10, 2),
|
||||
FOREIGN KEY (commande_id) REFERENCES commande(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (produit_id) REFERENCES produit(id)
|
||||
);
|
||||
|
||||
|
||||
|
||||
Exercice 7
|
||||
|
118
BD/Lekpa/tp02_2.txt
Normal file
118
BD/Lekpa/tp02_2.txt
Normal file
@@ -0,0 +1,118 @@
|
||||
execice 1
|
||||
|
||||
create or replace function fn_points_fidelite(Id_client Number)
|
||||
return Number
|
||||
IS
|
||||
V_pt_fidelite number;
|
||||
Begin
|
||||
Select sum(L.prix_total) Into V_pt_fidelite
|
||||
from ligne_Commande L, Commande CO
|
||||
where L.commande_id = CO.id AND CO.client_id = Id_client;
|
||||
V_pt_fidelite := floor(V_pt_fidelite/10);
|
||||
return V_pt_fidelite;
|
||||
Exception
|
||||
when No_data_found then
|
||||
return 0;
|
||||
end fn_points_fidelite;
|
||||
|
||||
select fn_points_fidelite(16) from dual;
|
||||
|
||||
|
||||
declare
|
||||
cursor C_client IS Select id, nom from client;
|
||||
V_points number;
|
||||
Begin
|
||||
for v_client in c_client
|
||||
loop
|
||||
v_points := fn_points_fidelite(v_client.id);
|
||||
if (v_points < 2) then
|
||||
DBMS_OUTPUT.PUT_LINE(v_client.nom || 'à' || v_points || 'point de fidelité' );
|
||||
else
|
||||
DBMS_OUTPUT.PUT_LINE(v_client.nom || 'à' || v_points || 'points de fidelités' );
|
||||
end if;
|
||||
end loop;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
exercice 2
|
||||
|
||||
create or replace trigger trg_DeleteCommande
|
||||
Before delete
|
||||
on Commande
|
||||
for each row
|
||||
begin
|
||||
delete from ligne_commande L where L.commande_id = :old.id;
|
||||
end trg_DeleteCommande;
|
||||
|
||||
|
||||
|
||||
|
||||
exercice 3
|
||||
|
||||
create or replace trigger trg_DeleteClient
|
||||
Before delete
|
||||
on Client
|
||||
for each row
|
||||
begin
|
||||
delete from Commande CO where CO.client_id = :old.id;
|
||||
end trg_DeleteCommande;
|
||||
|
||||
|
||||
exercice 4
|
||||
|
||||
create table Client_His as select * from Client;
|
||||
delete from Client_His;
|
||||
|
||||
create or replace trigger trg_DeleteClient
|
||||
before delete
|
||||
on Client
|
||||
for each row
|
||||
begin
|
||||
delete from Commande CO where CO.client_id = :old.id;
|
||||
insert into Client_His values (:old.id, :old.prenom, :old.nom, :old.email, :old.ville);
|
||||
end trg_DeleteCommande;
|
||||
|
||||
|
||||
exercice 5
|
||||
|
||||
la contrainte de suppression en cascade
|
||||
|
||||
|
||||
|
||||
exercice 6
|
||||
|
||||
drop table Client cascade constraints;
|
||||
drop table Commande cascade constraints;
|
||||
drop table ligne_commande cascade constraints;
|
||||
|
||||
CREATE TABLE client (
|
||||
id INT PRIMARY KEY,
|
||||
prenom VARCHAR(255),
|
||||
nom VARCHAR(255),
|
||||
email VARCHAR(255),
|
||||
ville VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE commande (
|
||||
id INT PRIMARY KEY,
|
||||
client_id INT,
|
||||
date_achat DATE,
|
||||
reference VARCHAR(255),
|
||||
FOREIGN KEY (client_id) REFERENCES client(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE ligne_commande (
|
||||
id INT PRIMARY KEY,
|
||||
commande_id INT,
|
||||
produit_id INT,
|
||||
quantite INT,
|
||||
prix_total DECIMAL(10, 2),
|
||||
FOREIGN KEY (commande_id) REFERENCES commande(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (produit_id) REFERENCES produit(id)
|
||||
);
|
||||
|
||||
|
||||
|
||||
Exercice 7
|
||||
|
Reference in New Issue
Block a user