2009-07-28 7 views
2

Je voudrais obtenir le nombre d'arguments requis pour une procédure stockée dans MySQL. Est-ce possible?Obtenir le nombre d'arguments pour une procédure stockée

Ma première pensée était d'essayer

SELECT * FROM information_schema.ROUTINES; 

mais est là aucune information sur le nombre d'arguments pour autant que je peux voir. L'essai suivant a été

SHOW PROCEDURE STATUS; 

mais cela semble juste retourner un sous-ensemble de la première requête.

Mon objectif est d'être en mesure de « NULL-pad » un appel sproc en PHP pour éviter des erreurs comme

"Incorrect number of arguments for PROCEDURE schema.table; expected nn, got mm 

Pour une table de consultation statique serait des travaux de cours, mais il est certainement pas souhaitable. Et bien sûr, on pourrait analyser le message retourné, modifier la requête et réessayer, mais cela ne semble pas très bien non plus.

Merci d'avance!/Victor

Répondre

1

Vous pouvez récupérer la liste des paramètres via:

SELECT DISTINCT Nom , param_list DE mysql.proc OU db = BASE DE DONNÉES();

+0

Merci! Encore un format un peu maladroit, mais au moins toutes les infos sont là et analysables. Dommage que ce soit aussi bien formé que la chaîne utilisée pour créer la procédure (IN/OUT/INOUT peut être omis par exemple). – Victor

0

SHOW CREATE PROCEDURE < nom_procédure >;

http://dev.mysql.com/doc/refman/5.0/en/show-create-procedure.html

+0

Merci pour la réponse, mais malheureusement, la déclaration semble avoir deux inconvénients. 1: Il renvoie la procédure _entire_ - une bonne partie de l'analyse est requise et beaucoup de données inutiles. 2: Cela nécessite que vous soyez le créateur de la fonction, sinon la partie "Créer une procédure" est nulle et aucune information ne peut être extraite. Merci quand même!/Victor – Victor

Questions connexes