begin process at 2010 03 19 07:09:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Oracle

 > 

Functions

 > 

Problème Trigger


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème Trigger

mercredi 23 janvier 2008 à 09:33:23 | Problème Trigger

DrZoune

Bonjour a tous,
c'est la première fois que je fais un post sur ce forum donc pardonnez moi si je fais des erreurs dans l'énonciation de mon problème.
Donc j'ai créé un trigger pour faire une mise a jour entre une table principale depuis une table temporaire( les champs des deux tables étant similaires).
     -si un matricule est déja présent dans la table principale alors on fait une mise a jour dans cette table avec les valeurs de la table temporaire.
     -si un matricule n'est pas présent alors on fait une insertion dans la table principale.

[code=oracle8]CREATE OR REPLACE TRIGGER updateTempGest
AFTER INSERT ON TEMP
FOR EACH ROW

DECLARE cpt, cpt1, cpt2, cpt3 int := 1;
        nbreElement int := 'SELECT count(*) FROM GEST';
        ligneGest GESTOR.matr_gest%TYPE;
        ligneTemp TEMP.matr_gest%TYPE;
        TYPE codeGest IS TABLE OF VARCHAR(10) INDEX BY BINARY_INTEGER;
        tabGest codeGest;
        tabTemp codeGest;
        CURSOR lectGest IS SELECT matr_gest FROM GESTOR;
        CURSOR lectTemp IS SELECT matr_gest FROM TEMP;
    
BEGIN
    OPEN lectGest;
    OPEN lectTemp;
    
    FOR cpt 1..nbreElement LOOP
        FETCH lectTemp INTO ligneTemp;
        tabTemp(cpt) := ligneTemp;
    END LOOP;
    
    FOR cpt1 1..nbreElement LOOP
        FETCH lectGest INTO ligneGest;
        tabGest(cpt1) := ligneGest;
    END LOOP;
    
    FOR cpt2 1..nbreElement LOOP
        FOR cpt3 1..nbreElement LOOP
            IF tabTemp(cpt2) = tabGest(cpt3) THEN
            UPDATE GESTOR SET     (GESTOR.nom_gest := TEMP.nom_gest,
                                GESTOR.prenom_gest := TEMP.prenom_gest,
                                GESTOR.secteur_gest := TEMP.secteur_gest,
                                GESTOR.code_gest := TEMP.code_gest,
                                GESTOR.secteur1_gest := TEMP.secteur1_gest,
                                GESTOR.codeSecteur_gest := TEMP.codeSecteur_gest,
                                GESTOR.codeInc_gest := TEMP.codeInc_gest,
                                GESTOR.codeID_gest := TEMP.codeID_gest,
                                GESTOR.codeNom_gest := TEMP.codeNom_gest,
                                GESTOR.dateEmbauche_gest := TEMP.dateEmbauche_gest),
            WHERE tabGest(cpt2) = tabTemp(cpt3);
            ELSE
                INSERT INTO GESTOR VALUES (TEMP.matr_gest,TEMP.nom_gest,TEMP.prenom_gest,TEMP.secteur_gest,TEMP.code_gest,TEMP.groupe_gest,TEMP.secteur1_gest,TEMP.codeSecteur_gest,TEMP.codeInc_gest,TEMP.codeID_gest,TEMP.codeNom_gest,TEMP.dateEmbauche_gest);
            END IF;
            cpt3 := cpt3 + 1;
        END LOOP;
        cpt2 := cpt2 + 1;
    END LOOP;
    
    CLOSE lectGest;
    CLOSE lectTemp;

END;[/code]

L'erreur s'affichant suite à
[code=oracle8]SHOW ERRORS;[/code]
[code=oracle8]1/12     PLS-00103: Symbole "," rencontré à la place d'un des symboles
         suivants :
         constant exception <identificateur>
         <identificateur entre guillemets> table LONG_ double ref char
         time timestamp interval date binary national character nchar

1/35     PLS-00103: Symbole "=" rencontré à la place d'un des symboles
         suivants :
         ) ,[/code]

Je croyais pouvoir faire directement un UPDATE entre les deux tables mais après pas mal de recherches je n'ai rien trouvé, du moins rien qui aille avec mon contexte!

J'aimerais que l'on m'éclaircisse s'il vous plait.
mercredi 23 janvier 2008 à 11:14:07 | Re : Problème Trigger

dominique.stock

bonjour,
je ne suis pas expert en oracle mais une de tes erreurs ne serait pas lié à la virgule en fin de cette ligne :
"  GESTOR.dateEmbauche_gest := TEMP.dateEmbauche_gest), "


Dom
mercredi 23 janvier 2008 à 11:33:46 | Re : Problème Trigger

DrZoune

merci ca devait etre une erreur et en fait j'en ai compris d'autres :
    -dans la déclaration des mes compteurs, a priori je ne peux pas les mettres bout à bout, il fallait les mettres les un en dessous des autres, va savoir pourquoi
    -et dans mes "FOR cpt 1..nbreElement LOOP", il manque un In entre "cpt" et "1"
pioufff ca fait du bien de trouver des réponses quand ca fait déja plusieurs heures que tu planches là dessus!!!!


Cette discussion est classée dans : table, code, temp, gest, gestor


Répondre à ce message

Sujets en rapport avec ce message

éléiminatio des doublons : instruction delete avec jointure [ par overider ] Bonjour à tousje souhaite eliminer les doublons dans un table.J'ai d'abord rechercher les doublons (merci a kechia pour sa requette) puis je les ai st doublons avec distinct [ par deubal ] bonjour, voila j'ai une table contenant des fournisseurs avec un code unique, un libellé, un code postal, et une ville.je voudrais creer une requete q mise a jour dans une base de donnée [ par goueg83460 ] bonjour je voudrais faire une requete UPDATE sachant qu'elle va enregistrer un code d'accés dans une table reservation. Sachant que pour trouver ce co sql tri?!!! [ par abari ] salut tout le mondej'ai un probléme de tri?!!! dans ma table les enregistrement sont stockées d'une facon des ordonnées comme suit:code nom prénom MySQL copier une table vers une autre table [ par julien__ ] Je ne trouve aucun code source ni aide à ce sujet...Je cherche à copier une sélection d'une table MySQL dans une autre table qui n'est pas vide avec d requête admis /ajourné [ par moun778 ] salut a tt le mondej'ai une table note qui contient  les champs suivant(annee scolaire,annee d'etude,code module,code examen, note)je veux extraire a Association n,m entre deux tables sans intégrité référentielle POSSIBLE ??? [ par aitoz ] Bonjour,Je patauge depuis 2 jours sur un une relation entre deux tables.Mon message d'erreur dit :Les colonnes de la table 'DICO' ne correspondent pas Différentes valeurs pour un même code [ par Neurasthenie ] Bonjour,Je travailles actuellement sur un projet de migration (de base à base) et j'écris donc les procédures stockées qui permettront d'aller cherche LOAD DATA INFILE [ par Ninie972 ] Bonjour, j'ai un autre problème concernant le LOAD DATA INFILE. la requête fonctionne (pas d'erreur) mais aucun enregistrements n'est inséré alors que xml comme une table. [ par bossun ] salut,j'ai un peu de peine avec t-sql et xml.j'ai une structure comme ceci..


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,172 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales