|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : août 2007 Messages : 60 ![]() |
Rebjr !
Voilà, je veux donc éxécuter un bloc pl/sql qui me permet d'appeler une procédure qui va inscrire l'utilisateur donnée à un client dans une table et tester s'ils st pas déjà présents dans la table. J'emploie donc la procédure dans une boucle Code :
Prtant la requête dans ma procédure fait une comparaison entre mes paramètres (IN) avec les données de mes tables, et fais l'insertion qd c'est le cas, donc ne renvoie qu'une seule ligne qd il y a correspondance car une seule ligne par utilisateur inscrit à un client donné. Où pourrais-je me tromper |
||
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
L'erreur doit provenir peut-être de ta procédure, parce que là, d'un rapide coup d'oeil, je ne vois pas ce qui cloche.
Pourrais-tu donner plus de détail sur l'algo de ta procédure ? Edit: Je parle bien sûr de la procédure que tu as représenté par : Code :
mon_package.maprocedure(rec.nom,rec.prenom,rec.mdp,client); |
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : août 2007 Messages : 60 ![]() |
Là voilà !
Code :
|
||
|
|
00
|
|
|
#4 | ||||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
cette requete doit ramener plus d'une ligne.
Code :
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : août 2007 Messages : 60 ![]() |
Le fait est qu'elle va comparer ma chaîne de caractère et récupérer l'id de l'utilisateur et du client concerné. Comment se pourrait-il qu'il renvoie plus d'une ligne vu qu'il n'y a qu'une inscription possible ? étant donné qu'un utilisateur ne peut pas être membre plus d'une fois à un même client.
edit:non j'ai bien vérifié. qd je rentre les bons paramètres, mes ids concernés sur la première requête sont prises, puis dans la 2eme je fais une comparaison avec ces premiers pour gérer s'ils sont déjà inscrits. J'ai bien une ligne de retournée. |
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() Inscription : août 2007 Messages : 20 ![]() |
Bonjour,
Tu pourrais pour trouver d'où vient ton erreur ajouter une variable number 'numinst' et lui affecter des valeurs incrémentée avant et après chacun de tes select puis gérer l'exception TOO_MANY_ROWS et retourner en paramètre OUT de ta procédure le numéro d'instruction et pourquoi pas le concaténer avec le name et le client afin d'identifier quel enregistrement te pose problème. |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Code :
2 : Où sont les jointures avec ces tables table_inscrit,table_clients 3 : Attention aux paramètres du même nom qu'une colonne (pour éviter ça toujours avoir un nommage particulier pour les paramètres genre p_nomparam
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#8 | ||
|
Invité régulier
![]() Inscription : août 2007 Messages : 60 ![]() |
Oula la grosse bêtise ça se voit que j'étais fatigué :p.
Pour cette requête,McM, voici sa correction, la table table_inscrit n'y est pas je ne l'utilise pas dans la première requête, uniquement dans la 2eme. Pour les alias, vu que je ne récupère qu'un champ(enfin 2 j'oublie le nom ^^) de la table_client je n'ai pas jugé nécessaire de le mettre. Code :
Merci de votre attention. |
||
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Table_client: le champ nom_client(qui n'est pas la pk qui doit être idclient) est-il unique ?
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : août 2007 Messages : 60 ![]() |
Oui il est unique.
Je ne comprends pas que l'extraction puisse tjs rammener plus de ligne. Vu que ma première requête fait une comparaison entre les paramètres rentrés et ce qui est présent dans la table, et ma 2ème requête qui va bien vérifier avec les clauses where, les id sélectionnés par la première requête. |
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
ajoute une trace
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#12 | ||
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
En toute logique si une des 2 requêtes suivantes ramène au moins une ligne, tu auras identifié ton problème
Code :
La dernière fois que j'ai eu ce genre de mésaventure, c'était la faute d'un trigger : regarde si tu n'as pas un trigger BEFORE INSERT dans ta table cible, et si oui, vérifie qu'il n'y ait pas de loup à l'intérieur |
||
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() Inscription : août 2007 Messages : 60 ![]() |
He bien merci à vous 2 pour ces solutions
Dans un premier temps, j'ai testé ta première requête, et effectivement j'avais un doublon (incroyable lol).-->donc merci Loyd1974 Puis dans un deuxième temps, la gestion du "too_many_rows", a pu m'afficher le doublon concerné et l'insertion s'est bien passée-->donc merci McM. Sympa pour le coup de main |
|
|
00
|
|
|
#14 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
alors
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() Inscription : août 2007 Messages : 60 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com