IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Aide exo trigger N°2 ^^


Sujet :

PL/SQL Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Aide exo trigger N°2 ^^
    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

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Sais-tu que tu as accès en ligne à l'intégralité de la documentation Oracle et que tu peux aussi la télécharger au format Pdf ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 137
    Points : 1 917
    Points
    1 917
    Par défaut
    Bonjour,

    Comme le dit Al1_24, le mieux c'est que tu lises la documentation, même ici il y en a en français je pense.

    ROWTYPE est assez parlant non? ROW-TYPE = Type-Ligne, donc on déclare la variable du type de ligne de la table en question, ce qui fera que la variable sera un record dont les éléments mapperont les colonnes de la table.
    Concernant le SELECT INTO, celui-ci utilise une sous-requête d'existence.
    ROWNUM est une pseudo-colonne qui assigne un numéro incrémental à chaque ligne retournée. Ce numéro est assigné à la fin, c'est pour cela que si tu souhaites qu'il soit assigné selon un ordre précis il faut d'abord faire un ORDER BY dans une sous-requête (comme dans ton exemple).
    DBMS_OUTPUT.PUT_LINE sert à afficher des messages dans le buffer de sortie, alors que RAISE_APPLICATION_ERROR sert à lever volontairement une erreur.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup, je vais essayez de comprendre avec la doc oracle du coup

Discussions similaires

  1. aide création trigger
    Par roblescriso dans le forum Développement
    Réponses: 2
    Dernier message: 02/11/2009, 15h50
  2. aide creation trigger sous mysql
    Par bil.dev dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 08/02/2009, 23h18
  3. besoin d'aide sur trigger
    Par devalender dans le forum SQL
    Réponses: 2
    Dernier message: 18/07/2004, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo