0% ont trouvé ce document utile (0 vote)
16 vues2 pages

Solution PLSQL

Le document présente trois blocs de code PL/SQL. Le premier extrait les noms et emails des clients inscrits avant une certaine date, le second met à jour les prix des produits inférieurs à 20, et le troisième calcule le montant total des achats d'un client spécifique. Des alternatives pour les exercices sont également mentionnées.

Transféré par

hindemelais
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues2 pages

Solution PLSQL

Le document présente trois blocs de code PL/SQL. Le premier extrait les noms et emails des clients inscrits avant une certaine date, le second met à jour les prix des produits inférieurs à 20, et le troisième calcule le montant total des achats d'un client spécifique. Des alternatives pour les exercices sont également mentionnées.

Transféré par

hindemelais
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

**Question 1**

SET SERVEROUTPUT ON
DECLARE
CURSOR C1 IS SELECT NOM, EMAIL FROM CLIENTS WHERE DATE_INSCRIPTION <
(TRUNC(SYSDATE,'YY')-1);
nom CLIENTS.NOM%TYPE;
email CLIENTS.EMAIL%TYPE;
BEGIN
OPEN C1;
LOOP FETCH C1 INTO nom, email;
EXIT WHEN C1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('NOM: '|| nom || ' EMAIL: '|| email );
END LOOP;
CLOSE C1;
END;

**FIN**

**Question 2**

SET SERVEROUTPUT ON
DECLARE
CURSOR C1 IS SELECT ID, PRIX FROM PRODUITS WHERE PRIX < 20 ;
id PRODUITS.ID%TYPE;
prix PRODUITS.PRIX%TYPE;
nombre INT;
BEGIN
nombre := 0;
OPEN C1;
LOOP FETCH C1 INTO id, prix;
EXIT WHEN C1%NOTFOUND;
UPDATE PRODUITS SET PRIX = 1.1 * PRIX WHERE ID=id;
nombre := nombre +1;
END LOOP;
CLOSE C1;
DBMS_OUTPUT.PUT_LINE( nombre || ' lignes ont été modifiées' );
END;

**FIN**

**Question 3**

SET SERVEROUTPUT ON
DECLARE
col INT := 27;
total COMMANDES.MONTANT%TYPE;
BEGIN
SELECT
SUM(PRO.PRIX * CMDP.QUANTITE) INTO total
FROM
CLIENTS CLI
INNER JOIN
COMMANDES CMD ON CLI.id = CMD.CLIENT_ID
INNER JOIN
COMMANDE_PRODUITS CMDP ON CMD.id = CMDP.commande_id
INNER JOIN
PRODUITS PRO ON CMDP.produit_id = PRO.id
WHERE CLI.ID = col;

DBMS_OUTPUT.PUT_LINE( 'Ce client a effectué des achats dont le montant total est
égal à: ' || total );
END;

**FIN**

-------------------------------------------------------------------------------
****Autres propositions de solutions pour les exercices****
***Exercice 1***

***FIN***

***Exercice 2***

nombre := SQl%ROWCOUNT;

***FIN***

Vous aimerez peut-être aussi