MySQL Procédures Stockées ne fonctionne pas avec SELECT (question de base)

Je suis en utilisant une plate-forme (perfectforms) qui m'oblige à utiliser des procédures stockées pour la plupart de mes questions, et n'ayant jamais utilisé de procédures stockées, je ne peux pas comprendre ce que je fais mal. L'instruction suivante s'exécute sans erreur:

DELIMITER //
DROP PROCEDURE IF EXISTS test_db.test_proc//
CREATE PROCEDURE test_db.test_proc() SELECT 'foo'; //
DELIMITER ;

Mais quand j'essaie d'appeler à l'aide:

CALL test_proc();

J'obtiens l'erreur suivante:

#1312 - PROCEDURE test_db.test_proc can't return a result set in the given context

Je suis de l'exécution de ces instructions à partir de l'intérieur de phpmyadmin 3.2.4, la Version de PHP 5.2.12 et le serveur mysql version est 5.0.89-communauté.

Quand j'écris une procédure stockée qui renvoie un paramètre, puis sélectionnez-le, les choses fonctionnent bien (par exemple):

DELIMITER //
DROP PROCEDURE IF EXISTS test_db.get_sum//
CREATE PROCEDURE test_db.get_sum(out total int)
BEGIN
SELECT SUM(field1) INTO total FROM test_db.test_table;
END //
DELIMITER ;

fonctionne très bien, et quand je l'appelle:

CALL get_sum(@t); SELECT @t;

- Je obtenir la somme aucun problème.

En fin de compte, ce dont j'ai besoin pour faire est d'avoir une fantaisie instruction SELECT enveloppé dans une procédure stockée, donc je peux l'appeler, et retourner plusieurs lignes de champs multiples. Pour l'instant je suis juste essayer d'obtenir tout sélectionner de travail.

Toute aide est grandement appréciée.

  • Quand vous dites CALL myproc(); je suppose que vous voulez dire CALL test_proc();?
  • Oui désolé c'était un type-o. Est-il possible pour moi de le modifier?
  • Oui, je pense que vous devriez être en mesure de modifier vos propres messages. (Doit être un lien modifier de quelque part.)
  • J'ai corrigé le type-o.
InformationsquelleAutor TMG | 2010-03-02