Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je suis en train de faire des fonctions stockées avec Mysql et Zend.
Les procédures stockées, c ok.. les vues, c ok, mais pas les fonctions stockées.
J'ai des erreurs de syntaxe ou alors le moteur mysql me dit la procédure is_test() n'existe pas (et oui, c une fonction)
Par exemple, la fonction (qui aura des paramètres en fait) :
BEGIN
declare is_test bool;
SELECT
count(`USR_ID`) > 0 INTO is_test
FROM
`utilisateur`;
RETURN is_test;
ENDAvec Zend :
$dbAdapter = Zend_Registry::get('front_db');
$func = 'CALL is_test()';
$stmt= $dbAdapter->query($func);J'ai essayé plusieurs manieres de faire (comme pour les vues) :
$func = 'SELECT * FROM is_test()';
Les 2 ne marchent pas, comment faire ?.
Pour rappel, voici comment faire pour des procédures stockées et des vues (si çà peut aider quelqu'un
) :
$call = 'CALL sp_utilisateur_ins("'.
$data['USR_IDENTIFIANT'].'","'.
$data['USR_MOT_DE_PASSE'].'","'.
$data['USR_ADRESSE_EMAIL'].'","'.
$data['USR_CONTROLE'].'","'.
$data['USR_ROLE'].'","'.
$data['USR_CLE_ACTIVATION'].'","'.
'0","'.
$data['USR_DATE_CREATION'].'","'.
'1",'.
'@PAR_USR_ID)';
$stmt = $dbAdapter->query($call);
$row = $dbAdapter->query("SELECT @PAR_USR_ID");
$row = $row->fetchAll();
$insertId = (int)$row[0]['@PAR_USR_ID'];
$rows= $dbAdapter->query("SELECT * FROM view_available_annonce");
var_dump($rows->fetchAll());Merci
Fabrice
Hors ligne
Je crois que j'ai la solution
(voir ici).
Il faut faire comme ceci :
BEGIN
declare is_test bool;
SELECT
count(`USR_ID`) > 0 INTO is_test
FROM
`utilisateur`
WHERE `USR_ID` = param_utilisateur_id AND `USR_ROLE` = param_utilisateur_role;
RETURN is_test;
ENDet
$stmt = $dbAdapter->prepare("SELECT is_test(:id,:role)");
$stmt->execute(array(':id'=>1,':role'=>'administrator'));
print_r($stmt->fetchAll());Cela me renvoi ceci :
Array ( [0] => Array ( [is_test('1','administrator')] => 0 ) )Voilà
Fabrice
Hors ligne