|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() |
Bonjour a tous,
Je dois créer un trigger qui doit metre à jour 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 :
Code :
J'aimerais que l'on m'éclaircisse s'il vous plait. |
||||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Code :
Encore quelque un qui n'a pas les temps de lire la documentation avant de programmer. |
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() |
Désolé mais malgrès ce que tu pense j'ai quand meme pris le temps de lire de la documantation mais pour ce cas là j'ai pas trouver ce qu'il fallait mettre.
Si j'ai posté cet article c'est que je débute en matière de trigger donc ca serait simpa de pas me descendre comme ca, merci! |
|
|
00
|
|
|
#4 | ||
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 352 ![]() |
Tu ne peux pas initialiser une variable avec une requete SQL comme tu le fais
il faut que dans ta partie declare tu déclare juste une variable NbreElement de type int et ensuite, au tout début du begin, tu initialise ta variable comme suit : Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() |
Merci a toi Taoueret, mais j'ai fini par trouver la bonne syntaxe pour ca cas là
Mais pour ce qui est du reste, ca plante toujours. j'ai toujours le problème de la parenthèse droite qui est inexistante alors que toutes celle qui sont ouvertes sont fermès après !!! tu vois pas d'autres soucis par hasard ? |
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Citation:
Voilà encore un bout de code Code :
En plus la clause Where démontre encore une fois beaucoup d’imagination mais très peu de connaissance. Dans ce même code l’incrémentation des compteurs est erronée. Et on parle plus du nombre des variables déclarées inutilement, etc. Ecoute, laisse tomber les triggers, et le code PL/SQL pour l’instant. Etudie le tutorial du langage SQL et travaille les exemples. Une fois que t’arrive à maîtriser ça passe au PL/SQL. Et une fois que tu maîtrises aussi le PL/SQL à un niveau décent revient aux triggers. Allez bon courage il te faut |
|||
|
|
00
|
|
|
#7 |
|
Membre expérimenté
![]() Inscription : juillet 2007 Messages : 495 ![]() |
Nimothenicefish, ce que dit mnitu est peu dur sur la forme, mais je ne peux que l'appuyer sur le fond.
J'ai ouvert ton article il y a 2 heures, mais en jetant un coup d'oeil sur ton code, j'ai vite renoncé. Ton plantage n'est pas spécifique au fait que ce soit un trigger (ça c'est un détail), mais tu as plein d'erreurs de programmation, certaines liées à la connaissance de PL/SQL, d'autres algorithmiques tout simplement. Alors, tu écris une procédure (un trigger !) de quelques dizaines de lignes, tu compiles, ça plante, donc tu poste ici. Mais si on te débloque sur le premier plantage, ça plantera sur un 2ème, tu nous re-sollicitera, puis un 3è, etc, etc... C'est pas comme ça qu'on bosse. A toi déjà de tester unitairement tes bouts de code, tes requêtes, parce que là on en aurait pour des heures et des pages de dactilographie à tout t'expliquer. Et c'est vrai qu'il y a des erreurs de débutant, certes, mais qui démontrent que tu n'as pas dû trop éplucher la doc., ne serait-ce que les tutoriels de ce site. Je t'en conseille un très bon pour commencer : http://sheikyerbouti.developpez.com/pl_sql/ A moins que tu tombes sur quelqu'un de très disponible...
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche ! |
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 352 ![]() |
ton erreur vient surement de ta clause where dans ton update.
Il te faut where matr_gest = tabtemp(cpt3). de plus, tu ne peux pas utiliser TEMP.xxx pour mettre à jour tes données. Il faut que tu te positionne sur l'enregistrement que tu souhaite (à savoir tabTemp(cpt3).xxx ) Dans une boucle for .. in ... loop, l'incrémentation est automatique ! Inutile donc de mettre cpt2 = cpt2 + 1 Mnitu, tu as le droit de faire des reflexions mais il y a différentes façons de le dire ! |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() |
Merci à vous, par contre j'aurai bien voulu télécharger ce cours car j'ai pas internet chez moi et j'aurai voulu le bosser ce soir mais il me semble que le lien est mort, donc si quelqu'un l'a déja qu'il puisse ma le faire parvenir par mail à cette adresse au plus tôt : matthieucrochet@gmail.com Merci
|
|
|
00
|
|
|
#10 |
![]() Inscription : décembre 2002 Messages : 2 397 ![]() |
Non non, vérifié à l'instant, j'ai pu le télécharger sans souci...
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() |
En effet il n'est pas mort, le problème était du à Firefox qui ne voulait pas le télécharger, alors j'ai pris IE qui bizarrement a bien voulu.
En tout cas merci a vous, ca m'aura fait comprendre que j'ai pas assez bossé ! |
|
|
00
|
|
|
#12 | |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Citation:
Concernant comment "le dire" c'est comme pour certaines maladies : il y a de situation ou le bistouri c'est le vrai remède. |
|
|
|
00
|
|
|
#13 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2008 Messages : 49 ![]() |
Bonjour,
je viens de trouver la fonction : Merge qui m'interesse et donc j'aurai voulu avoir de la doc dessus car pour l'instant je n'ai rien trouvé. Si quelqu'un pouvait me recommander une source.Merci |
|
|
00
|
|
|
#14 |
|
Membre expérimenté
![]() Inscription : juillet 2007 Messages : 495 ![]() |
Quel rapport avec la discussion en cours ?
Sinon, tu devrais trouver ton bonheur ici : http://oracle.developpez.com/faq/?page=3-1#merge puis dans le sommaire, clique sur "Comment insérer ou mettre à jour des données sans savoir si les enregistrements correspondants existent déjà ?"
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche ! |
|
|
00
|
|
|
#15 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2008 Messages : 49 ![]() |
Ah pardon pour avoir poster ici.
En tout cas merci pour le lien, j'ai en effet trouvé mon bonheur ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com