**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***