|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Thomas Denoncin Inscription : janvier 2011 Messages : 3 ![]() |
Bonjour à tous.
Je me permets de faire un peu de nécromancie de topic dans la mesure où ce sujet correspond tout à fait à ce que j'essaie de faire. Petite présentation du contexte tout d'abord : J'ai besoin de faire des requêtes avec un nom de table variable dans une procédure stockée en mysql. Après quelques recherches sur le web, il apparait que pour ce faire, je dois utiliser un PREPARE statement. Courageux et optimiste, je me lance. Oui mais voilà, je récupère une erreur : "#1312 - PROCEDURE 3620t01.maProcedure can't return a result set in the given context" Damn.. Après pas mal de recherches cette fois-ci, je retiens que : -Il n'est pas possible de faire d'utiliser un PREPARE statement dans une fonction ou une procédure stockée SAUF pour les procédures stockées justement DEPUIS la version 5.0.13 de mysql. Or, je travaille sur la version 5.0.51. Du coup je ne vois vraiment pas d'où peut venir le soucis. Si une bonne âme avait une idée.. Pour info, je mets ici la procédure de test que j'ai faite, basée sur celle utilisée plus haut dans ce topic : Code :
Code :
#1312 - PROCEDURE 3620t01.maProcedure can't return a result set in the given context
Merci d'avance. Thomas |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Les procédures stockées de MySQL ne sont pas faites pour envoyer un jeu de résultat... sur des cas simples, ça marche quand même, mais comme elles ne sont pas faites pour ça, ça plante à la moindre petite complexité...
Le contournement habituel est de faire un CREATE SELECT : Code :
|
||
|
|
10
|
|
|
#3 | ||
|
Invité de passage
![]() Thomas Denoncin Inscription : janvier 2011 Messages : 3 ![]() |
Ok, merci beaucoup, c'est bon à savoir.
Mais du coup mon problème réel persiste. Je m'explique : Le code avec la requete SELECT n'était qu'un test pour tester les PEPARE statement, ce que je cherche en réalité à faire est un INSERT, comme ceci : Code :
Mais j'ai tout de même l'erreur. Qu'est-ce que j'ai manqué ? Merci d'avance, Thomas |
||
|
|
00
|
|
|
#4 | ||||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
ça marche chez moi, à condition de corriger ta syntaxe pour avoir un CREATE qui fonctionne :
Code :
Code :
|
||||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Thomas Denoncin Inscription : janvier 2011 Messages : 3 ![]() |
Damn, ça ne fonctionne pas chez moi, même une fois le code corrigé..
Aurais-tu une idée de la cause du problème ? Y a-t-il une solution de contournement ? Merci d'avance, Thomas |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Peux-tu dire exactement ce qui ne marche pas (compilation, exécution) et nous donner le
message d'erreur ? |
|
|
00
|
|
|
#7 | ||
|
Invité régulier
![]() |
![]() Merci Antoun pour ton information. Je cherchais à réaliser un PREPARE dans une procédure stockée. Mon erreur venait du jeu de résultat retourné dans mon SELECT. Ton code ===> Code :
Un grand M.E.R.C.I. Jérôme. |
||
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 839 ![]() |
Les procédure stockée PEUVENT retourner directement autan de résultats que tu veux, il suffit d'avoir un client mysql avec la bonne version ou d'utiliser un connecteur qui DOIT permettre d'exécuter des requêtes avec un set de résultats multiples...
La seule limite avec les PREPARE c'est la récursivité avec le même nom de statement stockant l'action à faire et tout ce qui est interdit de toute manière dans les requêtes préparée (comme USE par exemple) moi ce code passe très bien et regarde il est un peu complexe... 2 curseurs imbriqué et (oh miracle) un select interne!!! Code sql :
Après c'est soit la configuration soit la version de mysql ou du connecteur mysql dans ton langage interrogateur qui est pas à jour |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com