From feb9f42f0aeda4cccfd06a25fdde00775e53f125 Mon Sep 17 00:00:00 2001 From: pascal Date: Mon, 15 Feb 2021 14:58:46 +0100 Subject: [PATCH] exo --- COURS/PLSQL.tex | 98 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) diff --git a/COURS/PLSQL.tex b/COURS/PLSQL.tex index c0b4903..f47020e 100644 --- a/COURS/PLSQL.tex +++ b/COURS/PLSQL.tex @@ -1464,7 +1464,103 @@ END; \begin{exercice} Afficher les produits qui n’ont pas de fournisseur et les produits qui en ont avec les noms de leurs fournisseurs. \end{exercice} -\cache{TODO} +\cache{ +SET echo OFF +SET verify OFF +SET feed OFF + +DROP TABLE tligne; +CREATE TABLE Tligne(ligne VARCHAR2(200)); + +DROP TABLE tligne2; +CREATE TABLE Tligne2(ligne VARCHAR2(200)); + + +DECLARE + +DnoProduit tProduit.noProduit\%TYPE; + +Ddesignation tProduit.designation\%TYPE; + +Dstock tProduit.stock\%TYPE; + +Dref tFournisseur.ref\%TYPE; + +DlistFourn VARCHAR(1000); + +CURSOR r IS SELECT noProduit,designation,stock FROM tProduit WHERE noProduit NOT IN (SELECT noProduit FROM tProduitFourn); + +CURSOR t IS SELECT noProduit,designation,stock FROM tProduit; + +CURSOR s IS SELECT ref FROM tProduitFourn WHERE noProduit = DnoProduit; + +BEGIN + +OPEN r; + +INSERT INTO Tligne VALUES('noProduit designation stock'); + +FETCH r INTO DnoProduit,Ddesignation,Dstock; + +WHILE r\%FOUND + +LOOP + INSERT INTO Tligne VALUES(DnoProduit||' '||Ddesignation||' '||Dstock); + + FETCH r INTO DnoProduit,Ddesignation,Dstock; + +END LOOP; + +CLOSE r; + +OPEN t; + +INSERT INTO Tligne2 VALUES('noProduit designation stock reference fournisseur'); + +FETCH t INTO DnoProduit,Ddesignation,Dstock; + +WHILE t\%FOUND + +LOOP + +DlistFourn :=''; + +OPEN s; + +FETCH s INTO Dref; + +WHILE s\%FOUND + +LOOP + +DlistFourn := DlistFourn||' '||Dref; + +FETCH s INTO Dref; + +END LOOP; + +CLOSE s; + +INSERT INTO Tligne2 VALUES(DnoProduit||' '||Ddesignation||' '||Dstock||' '||DlistFourn); + +FETCH t INTO DnoProduit,Ddesignation,Dstock; + +END LOOP; + +CLOSE t; + +END; + +. + +/ + +SELECT * FROM Tligne; +SELECT * FROM Tligne2; +SET echo ON +SET verify ON +SET feed ON +} \subsection{\code{UPDATE, DELETE ... WHERE CURRENT OF curseur}} Lors du parcours d'une table (ou une vue modifiable) par \code{FETCH}