Je viens d'attaquer un exo un peu plus dur et je bug sur certain point , je sais que vous pourriez m'expliquez du coup voila ^^

La Base:
ABONNE (#IdA, Nom, Prenom, Tel, Adresse, NbEmprunt)
LIVRE (#IdL, Titre, Editeur)
EXEMPLAIRE (CodBar, #IdL, Etat, An_achat)
EMPRUNT (CodBar, DateE, #IdA, DateRet)
RESERV (#IdL, #IdA, DateR, Contact)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
CRATE TRIGGER t_avert_reservation
AFTER UPDATE OF DATERET 
ON EMPRUNT
FOR EACH ROW
 
nomA ABONNE.NOM%TYPE
prenomA ABONNE.PRENOM%TYPE
adresseA ABONNE.ADRESSE%TYPE
titreR LIVRE.TITRE%TYPE
 
reservation RESERV%ROWTYPE ; -- Je ne comprends pas la difference entre %TYPE et %ROWTYPE :oops: 
 
BEGIN
 
SELECT * INTO reservation 
 	FROM (SELECT * FROM RESERV WHERE Contact <> 'OUI' AND IdL IN (SELECT IdL FROM EXEMPLAIRE WHERE CodBar = :NEW.CodBar) ORDER BY DateR)) ---- je comprends pas le FROM (.......(...)) trop de truc imbriqué c finit xD
	WHERE ROWNUM = 1 ; --- Que fait ROWNUM Exactement ? xD
 
	SELECT Nom, Prenom, Adresse INTO NomA, PrenomA, AdresseA
	FROM ABONNE WHERE IdA = reservation.IdA ;
 
	SELECT Titre INTO TitreR
	FROM LIVRE WHERE IdL = reservation.IdL ;
 
	Avertir(NomA, PrenomA, AdresseA, TitreR) ;
 
	UPDATE RESERV SET Contact = 'OUI'
		WHERE IdA = reservation.IdA AND IdL = reservation.IdL
			AND DateR = reservation.DateR ;
 
	EXECEPTION
	WHEN NO_DATA_FOUND THEN
	DBMS_OUTPUT.PUT_LINE('Pas de réservation pour ce livre') ; -- Quel est la Difference entre DBMS_OUTPUT.PUT_LINE et RAISE_APPLICATION_ERROR ?
END ;
Merci beaucoup vous me sauvez la vie