Problème de procédure stockée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de procédure stockée

par Tracker » 04 oct. 2007, 10:51

Re,
Essaie de modifier ta procedure en ajoutant le mot clé IN devant le nom de ton paramètre. Ca reste à valider, mais le problème semble déjà avoir été abordé sur un autre forum.
CREATE PROCEDURE `sp_select`(IN IN_WHERECLAUSE VARCHAR(200))
BEGIN
SET @S = CONCAT ("UPDATE ....... WHERE ", INWHERECLAUSE);
PREPARE STMT FROM @S;
EXECUTE STMT ;
END$$
Le gars donnait également une autre solution:
After reading a bit farther, I found a message from Per-Erik Martin that solved my problem.
Adding the CLIENT_MULTI_STATEMENTS flag to my call to mysql_real_connect() fixes the problem.
Maybe this will also help some of you.
Thanks!

par casalboss01 » 04 oct. 2007, 10:40

Salut,

j'appelle avec mysql_query(call ma_procedure(clausewhere));

Merci

par zeus » 04 oct. 2007, 10:28

Quel est le code PHP qui te permet d'exécuter cette procédure ?

par casalboss01 » 04 oct. 2007, 09:50

Depuis l'interface la requête fonctionne sans problème, ce n'est que depuis php que j'ai ce problème.

Merci

par Tracker » 04 oct. 2007, 09:00

En bouquinant la doc, je suis tombé là dessus:
SQL syntax for prepared statements cannot be used within stored routines (procedures or functions), or triggers. This restriction is lifted as of MySQL 5.0.13 for stored procedures, but not for stored functions or triggers. However, a cursor cannot be used for a dynamic statement that is prepared and executed with PREPARE and EXECUTE. The statement for a cursor is checked at cursor creation time, so the statement cannot be dynamic.
Peux-tu tester directement l'exécution de ta procedure (PREPARE + EXECUTE) depuis le shell de mysql ?

Problème de procédure stockée

par casalboss01 » 04 oct. 2007, 08:06

Bonjour à tous,

je fais appel à une procédure stockée en MYSQL à partir de mon script PHP.

Cette procédure fonctionne:

Code : Tout sélectionner

CREATE PROCEDURE sp_select() BEGIN UPDATE .....; END$$
Si néanmoins j'essaye de concaténer la requête avec un string, ce que je fais pour passer une clause Where en paramêtre, cela ne fonctionne plus.

Code : Tout sélectionner

CREATE PROCEDURE `sp_select`(IN_WHERECLAUSE VARCHAR(200)) BEGIN SET @S = CONCAT ("UPDATE ....... WHERE ", INWHERECLAUSE); PREPARE STMT FROM @S; EXECUTE STMT ; END$$
Ceci ne veut pas fonctionner en PHP et me returne le message suivant:

Code : Tout sélectionner

PROCEDURE .... can't return a result set in the given context.
Donc, si j'essaye de concatener des strings pour créer une query un peu plus complexe, en PHP le tout me le refuse.

Est-ce que qqn aurait une solution miracle ? :-)

Merci d'avance

Casalboss01