Comment appeler une procédure stockée en CakePHP ?

28 Avr 2011 0

Les applications Web nécessitent parfois l’appel à des procédures stockées. CakePHP ne propose pas de mécanisme « magique » pour effectuer l’appel aux procédures stockées et aux fonctions MySQL. Il est cependant tout à fait possible de réaliser cette opération en utilisant du SQL classique.

Exécuter une fonction et récupérer le résultat

Ici l’idée est d’appeler une fonction sur un modèle (peu importe lequel mais il est d’usage d’avoir un modèle en rapport avec les données) et de récupérer le résultat de son exécution, c’est tout simple :
[php] $conditions = array(‘fields’ => array(‘MA_FONCTION_MYSQL("PARAM") as resultat’));
$exec = $this -> Model -> find(‘first’, $conditions);
$resultat = $exec[0][‘resultat’];
[/php]

$resultat contiendra ainsi le retour de votre fonction MySQL.

Il est également possible d’utiliser la fonction query() :
[php] $exec = $this -> Model -> query(‘SELECT MA_FONCTION_MYSQL("PARAM") as resultat’);
$resultat = $exec[0][‘resultat’];
[/php]

Exécuter une procédure stockée

L’idée est la même pour les procédures stockées. Il est cependant nécessaire d’utiliser la clause CALL plutôt qu’un SELECT :
[php] $exec = $this -> Model -> query(‘CALL MA_PROCEDURE_STOCKEE("PARAM")’);
$resultat = $exec[0][‘resultat’];
[/php]

Dans ce cas, il n’est pas possible de récupérer de paramètres de sorties, contrairement aux fonctions MySQL.

Plus sur le sujet : la documentation CakePHP sur la fonction query()

La documentation MySQL sur les procédures et fonctions