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 :

Problème avec les procédures


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 39
    Par défaut Problème avec les procédures
    Chers collègues du forum,

    Je suis débutant en PL/SQL, je viens de découvrir que l'appel d'une procédure au sein d'un déclencheur est possible.

    J'ai fait l'appel de la procédure au sein d'un déclencheur.
    Il n'y a pas d'erreur de compilation, mais une erreur a lieu lors de l'exécution.

    Merci de m'aider.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Commence par nous montrer ton code !
    Difficile de trouver la solution à l'aveugle dans une boule de cristal...

  3. #3
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 39
    Par défaut
    Voici le le corps du trigger :
    Code PL/SQL : 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
    create or replace trigger "T_C_HW"
    AFTER insert on "COMPUTER"
    for each row
     
    DECLARE
      HER C_HW.CH_HERST%TYPE;
      TYP C_HW.CH_TYPE%TYPE;
      LIEF C_HW.CH_LIEF%TYPE;
      PREIS C_HW.CH_PREIS%TYPE; 
      BEZ  C_HW.CH_BEZ%TYPE;
      CPU C_HW.CH_CPU%TYPE;
      RAM C_HW.CH_RAM%TYPE;
      FP C_HW.CH_FP%TYPE;
      LIEFD C_HW.CH_LIEF_DAT%TYPE;
      FRNR C_HW.CH_FREIGAB_NR%TYPE;
      BESTNR C_HW.CH_BESTELL_NR%TYPE;
      BEM C_HW.CH_BEM%TYPE;
      BESTD C_HW.CH_BEST_DAT%TYPE;
      FRD C_HW.CH_FREIGAB_DAT%TYPE;
     
    BEGIN
     
      select CH_HERST, CH_TYPE, CH_LIEF, CH_PREIS, CH_BEZ, CH_CPU, CH_RAM, CH_FP, CH_LIEF_DAT, CH_FREIGAB_NR, CH_BESTELL_NR, CH_BEM, CH_BEST_DAT, CH_FREIGAB_DAT INTO HER, TYP, LIEF, PREIS, BEZ, CPU, RAM, FP, LIEFD, FRNR, BESTNR, BEM, BESTD, FRD
        FROM C_HW
       WHERE ch_art = :NEW.C_H_ART;
     
      P_INS_C(HER, TYP, LIEF, PREIS, BEZ, CPU, RAM, FP, LIEFD, FRNR, BESTNR, BEM, BESTD, FRD);
    end;
    /

    La procédure est P_INS_C.

    Ce trigger permet d'insérer automatiquement les champs à partir de la table hardware dont chaque enregistrement contient les ordinateurs de même type, vers la table computer où chaque ordinateur est dans une ligne.

    La procédure permet uniquement de faire l'insertion des données dans la table computer.

    Corps de la procédure :
    Code PL/SQL : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    create or replace procedure "P_INS_C"
    (
      her IN VARCHAR2,
      typ IN VARCHAR2,
      lief IN VARCHAR2,
      preis IN NUMBER,
      bez IN VARCHAR2,
      cpu IN VARCHAR2,
      ram IN VARCHAR2,
      fp IN VARCHAR2,
      liefd IN DATE,
      frnr IN VARCHAR2,
      bestnr IN VARCHAR2,
      bem IN VARCHAR2,
      bestd IN DATE,
      frd IN DATE)
    is
    begin
          INSERT INTO COMPUTER
                 ( 
                   C_HERST       ,
                   C_TYP         , 
                   C_LIEF        , 
                   C_PREIS       , 
                   C_BEZ         , 
                   C_CPU         ,
                   C_RAM         ,
                   C_FP          ,
                   C_LIEF_DAT    ,
                   C_FREIGAB_NR  ,
                   C_BEST_NR     ,
                   C_BEM         ,
                   C_BEST_DAT    ,
                   C_FREIGAB_DAT 
                 ) 
          VALUES 
                 ( 
                   HER    , 
                   TYP    ,
                   LIEF   , 
                   PREIS  , 
                   BEZ    , 
                   CPU    , 
                   RAM    , 
                   FP     , 
                   LIEFD  , 
                   FRNR   , 
                   BESTNR , 
                   BEM    , 
                   BESTD  , 
                   FRD              
                 ) ; 
     
          COMMIT; 
    end;​

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Tu réinsères une ligne dans Computer à chaque insertion dans Computer ?

    sinon, pas de commit dans un trigger (ou dans les procédures utilisées par le trigger)

  5. #5
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 39
    Par défaut
    Citation Envoyé par McM Voir le message
    Tu réinsères une ligne dans Computer à chaque insertion dans Computer ?

    sinon, pas de commit dans un trigger (ou dans les procédures utilisées par le trigger)
    Pardon, mais l´insertion est dans la table COMPUTER, l´insertion par sql sera restreinte aux champs : N_Serie, @ip, N_ordinateur : qui sont speciftique pour chaque ordinateur:

    Apres l´insertion de ces 4 champs par sql (insert into), je veut ici copier les autres caracteristiques de l´ordinateur a partir de la table C_HW, cette derniere contient pour chaque entree les caracteristique d´un modele d´ordinatuer, car l´entreprise commande toujour des ordinateur du meme modele avec un nombre pas moin que 20.

    je sais que l´utilisation de commit est interdit dans les triggers, c´est pour cela que j´ai utiliser commit dans la procedure et ensuite j´ai fait l´appel a cette derniere dans le trigger,
    J´espere que vous pouvez m ´aider a resoudre ce probleme.

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Donc je répète : Pas de commit dans une procédure appelée par un trigger.

    deuxièmement : Quel est le message d'erreur ?

Discussions similaires

  1. Problème avec les procédures stockées
    Par christa_k dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 26/08/2009, 17h22
  2. [MySQL] Problèmes avec les procédures stockées sous mysql
    Par GoTrUnKo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/11/2008, 22h00
  3. Problèmes avec les synonymes des procédures
    Par lido dans le forum Forms
    Réponses: 1
    Dernier message: 17/09/2008, 12h01
  4. Réponses: 0
    Dernier message: 15/01/2008, 11h16
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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