|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : août 2009 Messages : 22 ![]() |
salut!
etant novice dans oracle, j'ai de problemes suivants: voici mes tables: Ligne_Coms (Num_Com ,Num_Pro ,Qte_Com ); Commandes (Num_Com ,Date_Com,Nbre_lc),Mtot_Com,Num_Cli) voici mon trigger: Code :
Voici mes questions: 1) l'execution de ce trigger me donne l'erreur suivante: Code :
2) est ce que ce trigger respecte les regles ci-dessus? |
||||
|
|
00
|
|
|
#2 | ||
|
Membre éprouvé
![]() |
L'erreur de compilation vient de la ligne 7 où il manque un :NEW.
Ligne 12 : Prix_U est également inconnu car il ne s'agit pas d'une colonne d'aucune des 2 tables décrites. Sinon, pourquoi faire 2 UPDATE sur la table COMMANDES au lieu de mettre à jour les 2 colonnes en une fois ? Pour ne faire les mises à jour que si la fonction retourne TRUE, je n'aurais pas utilisé les COMMIT et ROLLBACK (je ne sais pas si cela fonctionne), mais j'aurais plutôt provoqué une erreur, ce qui donnerait (sans traiter le problème de Prix_U) quelque chose du style : Code sql :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : août 2009 Messages : 22 ![]() |
Merci pour l'aide.
au fait j'ai encor une autre table: Produits ( Num_Pro,Lib_Pro),Prix_U,Qtestock,Seuil_Reapro): L'execution de ton code me donne ceci: 2/4 PL/SQL: Statement ignored 2/24 PLS-00201: l'identificateur 'QTE_COM' doit être déclaré poutant qte_com existe. j ne comprend pas |
|
|
00
|
|
|
#4 | ||
|
Membre éprouvé
![]() |
L'erreur de compilation vient du fait que j'ai oublié d'ajouter le :NEW. à la ligne 7.
Si le prix unitaire Prix_U vient de la table Produits et que celle-ci contient un et un seul enregistrement pour le Num_Pro, alors il faut le récupérer pour le stocker dans une variable locale. On peut profiter de l'UPDATE fait sur cette table pour faire d'une pierre 2 coups. Le code serait le suivant : Code sql :
Il manque une gestion d'exception, mais ça devrait donner un bon point de départ. |
||
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : août 2009 Messages : 22 ![]() |
J'ai encor cette erreur:
Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre éprouvé
![]() |
Il y avait un problème dans le 2e UPDATE :
Code sql :
C'est bien exactement ce code que tu compiles ? Et le message d'erreur que tu donnes proviens bien du SHOW ERROR ? |
||
|
|
00
|
|
|
#7 | |||||
|
Invité de passage
![]() Inscription : août 2009 Messages : 22 ![]() |
Citation:
j'ai ce nouveau code: Code :
Code :
|
|||||
|
|
00
|
|
|
#8 | ||
|
Membre éprouvé
![]() |
J'avais oublié le DECLARE à la ligne 5.
Par contr, tu n'as pas pris le 2e UPDATE corrigé. J'ai testé le code suivant qui compile correctement : Code sql :
|
||
|
|
00
|
|
|
#9 | |
|
Invité de passage
![]() Inscription : août 2009 Messages : 22 ![]() |
merci xdescamp!!!!!
il reste la 2e question: Citation:
|
|
|
|
00
|
|
|
#10 |
|
Membre éprouvé
![]() |
Ca a effectivement l'air de répondre aux règles. Par contre les règles ne sont peut-être pas complètes (je ne connais pas le contexte):
- si le prix unitaire est plus précis que le centime, il faut peut-être arrondir le prix de la commande ? - est-ce qu'on ne risque pas de se retrouver avec des quantités en stock négatives ? Bref des fonctionnements limites. Mais dans les cas "normaux", ça devrait répondre au besoin. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com