Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-08-2009 15:02:08

abon
Nouveau membre
Date d'inscription: 06-08-2007
Messages: 7

Zend_Db et proc stock avec paramètres OUT

Bonjour,

J'ai un problème avec l'appel d'une procédure stockée MySQL comportant plusieurs paramètres de type OUT.


Entête de la procédure :

Code:

    CREATE PROCEDURE `PRC_USER_VALIDE`(p_login VARCHAR(20),
                                       p_pwd   VARCHAR(10),
                                   OUT p_nom   VARCHAR(50),
                                   OUT p_admin BOOL,
                                   OUT p_mess  VARCHAR(200))
.....
.....

Appel de la procédure dans la méthode qui va bien :

Code:

.....
.....
                $strNom=str_pad('', 50);
                $intAdmin=-1;
                $strMess=str_pad('', 200);

                // Préparation de l'appel de la procédure stockée
                $request = $this->dbConx->prepare("CALL PRC_USER_VALIDE(:pLogin, :pPwd, :pNom, :pAdmin, :pMess);");

                // Init. des paramètres
                $request->bindParam(':pLogin', $aLogin);  // Paramètre de la méthode
                $request->bindParam(':pPwd', $aMot);      // Paramètre de la méthode

                $request->bindParam(':pNom', $strNom, PDO::PARAM_STR, 20); 
                $request->bindParam(':pAdmin', $intAdmin, PDO::PARAM_STR, 10); 
                $request->bindParam(':pMess', $strMess, PDO::PARAM_STR, 200);
 
                // Exécution de la procédure
                $retour = $request->execute();
.....
.....

Message d'erreur affiché à l'exécution :

Code:

exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[HY000]: 
General error: 1414 OUT or INOUT argument 3 for routine disco.PRC_USER_VALIDE is not a variable 
or NEW pseudo-variable in BEFORE trigger

C'est un message d'erreur de MySQL, mais l'appel de la procédure avec MySQL Query Browser retourne bien le résultat attendu.

Je pense plutot qu'il y manque quelque chose dans mon code. Mais quoi ? ? ?

Merci de votre aide.

Hors ligne

 

#2 07-08-2009 16:58:18

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Zend_Db et proc stock avec paramètres OUT

les variables strNom intAdmin et strMess doivent exister avant l'appel
le plus simple est de leur assigner une chaine vide

mais je ne sais si c'est là ton pb
A+JYT

Hors ligne

 

#3 07-08-2009 17:04:00

abon
Nouveau membre
Date d'inscription: 06-08-2007
Messages: 7

Re: Zend_Db et proc stock avec paramètres OUT

Merci pour la réponse,

mais ....  l'init. des variables est faite dans les lignes au dessus du "...->prepare(....".

Merci.

A +

Hors ligne

 

#4 07-08-2009 21:38:28

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Zend_Db et proc stock avec paramètres OUT

sory j'ai lu trop vite

je ne sais que te dire l'erreur 1414 de mySql dit que tu as passé un littéral à la place d'une variable en argument

je ne sais pas où en est cette histoire mail il y avait un bug de référencé sur le sujet
http://bugs.mysql.com/bug.php?id=25970

A+

Hors ligne

 

#5 10-08-2009 09:43:17

abon
Nouveau membre
Date d'inscription: 06-08-2007
Messages: 7

Re: Zend_Db et proc stock avec paramètres OUT

Merci pour ta réponse,

Je vais transformer tout ça en fonction ....

Hors ligne

 

#6 25-08-2009 11:35:17

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Zend_Db et proc stock avec paramètres OUT

Code:

$registry = Zend_Registry::getInstance();
$config = $registry->get("config");
 
$db = Zend_Db::factory($config->db);
 
$stmt = $db->prepare("call import(?,?,?);");
$stmt->bindParam(1, $param1, PDO::PARAM_STR,1000);
$stmt->;bindParam(2, $param2, PDO::PARAM_STR, 255);
$stmt->bindParam(3, $param3, PDO::PARAM_STR, 255);
$res = $stmt->execute();

voila un code qui fonctionne par contre la procedure on la stocke ou ?


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#7 24-11-2009 02:16:33

ubini
Membre
Lieu: gillarens/Suisse
Date d'inscription: 23-01-2008
Messages: 110
Site web

Re: Zend_Db et proc stock avec paramètres OUT

Salut,

J'ai tourné un moment avant de pouvoir faire un appel qui ne me retourne pas d'erreur, j'éspère que cela pourra aider quelqu'un :

Code:

        $call = $this->_db->query("CALL addChild(?, @output)", array($id_parent));
        $result = $this->_db->query("SELECT @output")->fetch();
        return $result['@output'];

++


http://www.easyswap.org - site d'échange de biens et de services conçu avec jQuery et Zend Framework
http://www.lambelet.net - mon blog perso et inutile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages