diff --git a/COURS/BD-exo.sql b/COURS/BD-exo.sql new file mode 100644 index 0000000..62e735e --- /dev/null +++ b/COURS/BD-exo.sql @@ -0,0 +1,56 @@ +-- ALTER TABLE tfournisseur drop constraint fk_noproduit; +-- ALTER TABLE tfournisseur drop constraint fk_reffour; +-- ALTER TABLE tproduit drop constraint fk_codeRayon; + +DROP TABLE tProduitfourn CASCADE CONSTRAINTS; +DROP TABLE tfournisseur CASCADE CONSTRAINTS; +DROP TABLE tproduit CASCADE CONSTRAINTS; +DROP TABLE tRayon CASCADE CONSTRAINTS; +DROP TABLE TClient CASCADE CONSTRAINTS; + + +CREATE TABLE tRayon( +codeRayon CHAR(4) PRIMARY KEY, +nomRayon VARCHAR2(30), +etage NUMBER(1) +); + + +CREATE TABLE tProduit( +noProduit CHAR(4) CONSTRAINT pk_tProduit PRIMARY KEY, +designation VARCHAR2(30), +stock NUMBER(4) DEFAULT 0, +prix NUMBER(10,2), +codeRayon CHAR(4) CONSTRAINT fk_codeRayon REFERENCES tRayon +); + +CREATE TABLE tClient( +noClient CHAR(4) PRIMARY KEY, +nom VARCHAR2(30), +prenom VARCHAR2(30), +UNIQUE(nom, prenom) +); + +CREATE TABLE tfournisseur( +reffourn CHAR(4) PRIMARY KEY, +nom VARCHAR2(200), +qteA1 number, +dpt Number +); + + +CREATE TABLE tProduitfourn( +noproduit CHAR(4) CONSTRAINT fk_noproduit REFERENCES tproduit, +reffourn CHAR(4) CONSTRAINT fk_reffour REFERENCES tfournisseur, +prixf number(10,2), +qteA1 number, +qte Number, +PRIMARY KEY (noproduit,reffourn) +); + + +INSERT INTO trayon VALUES (89,'blue',2); +INSERT INTO trayon VALUES (99,'blue',3); + +INSERT INTO tProduit VALUES('B004','Imprimante jet 185',NULL, NULL, 89); +INSERT INTO tProduit(noProduit,designation,stock,prix,codeRayon) VALUES('B005','Jet 185',3,20,99); diff --git a/COURS/C-exo1.sql b/COURS/C-exo1.sql new file mode 100644 index 0000000..12b5458 --- /dev/null +++ b/COURS/C-exo1.sql @@ -0,0 +1,17 @@ +DROP TABLE TLigne; +CREATE TABLE TLigne(designation VARCHAR2(500)); + +variable vnoproduit char(4) +PROMPT Saisir un numero de produit +ACCEPT vnoproduit +DECLARE +dnbfournisseurs number ; +BEGIN +SELECT COUNT(*) INTO dnbfournisseurs FROM tProduitfourn WHERE noproduit = '&vnoproduit' ; +INSERT INTO Tligne VALUES('Le nombre de fournisseur du produit' ||'&vnoproduit'||' est '|| dnbfournisseurs) ; END ; + +. + +/ + +SELECT * FROM Tligne ; diff --git a/COURS/PLSQL.tex b/COURS/PLSQL.tex index 8358b0f..518dba7 100644 --- a/COURS/PLSQL.tex +++ b/COURS/PLSQL.tex @@ -117,8 +117,8 @@ \par\smallskip} -%\cachefalse % version prof -\cachetrue % version etudiant +\cachefalse % version prof +%\cachetrue % version etudiant \makeindex @@ -731,21 +731,21 @@ ACCEPT vnoproduit DECLARE -dnbfournisseurs number; +dnbfournisseurs number ; BEGIN -SELECT COUNT(*) INTO dbfournisseurs FROM WHERE noproduit = \&vnoproduit; +SELECT COUNT(*) INTO dnbfournisseurs FROM tProduitfourn +WHERE noproduit = '&vnoproduit' ; INSERT INTO Tligne VALUES('Le nombre de fournisseur du produit' -||\&vnoproduit||' est '|| dnbfournisseurs); - -END; +||'&vnoproduit'||' est '|| dnbfournisseurs) ; END ; . / -SELECT * FROM Tligne; + +SELECT * FROM Tligne ; } \subsection{Traitements conditionnels \code{IF ... THEN ... END IF;}}