Estoy usando una plataforma (formas perfectas) que me obliga a usar procedimientos almacenados para la mayoría de mis consultas, y nunca he usado procedimientos almacenados, no puedo entender lo que estoy haciendo mal La siguiente declaración se ejecuta sin errores:MySQL Stored Procedures no funciona con SELECT (pregunta básica)
DELIMITER //
DROP PROCEDURE IF EXISTS test_db.test_proc//
CREATE PROCEDURE test_db.test_proc() SELECT 'foo'; //
DELIMITER ;
Pero cuando intento llamarlo usando:
CALL test_proc();
me sale el siguiente error:
#1312 - PROCEDURE test_db.test_proc can't return a result set in the given context
Estoy ejecutando estas declaraciones desde dentro phpmyadmin 3.2.4, PHP Version 5.2.12 y la versión del servidor mysql es 5.0.89-community.
Cuando escribo un procedimiento almacenado que devuelve un parámetro, y luego seleccionarla, las cosas funcionan bien (por ejemplo):
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 ;
funciona bien, y cuando me llaman:
CALL get_sum(@t); SELECT @t;
Me sale la suma no hay problema.
En última instancia, lo que tengo que hacer es tener una declaración SELECT envuelta en un procedimiento almacenado, así puedo llamarlo y devolver varias filas de múltiples campos. Por ahora estoy tratando de obtener cualquier seleccione trabajando.
Cualquier ayuda es muy apreciada.
Cuando dice 'CALL myproc();' Supongo que quiere decir 'CALL test_proc();'? – Atli
Sí, lo siento, era un tipo-o. ¿Hay alguna manera de editarlo? – TMG
Sí, creo que debería poder editar sus propias publicaciones. (Debería ser un enlace de edición en algún lugar.) – Atli