Я использую платформу (perfectforms), которая требует, чтобы я использовал хранимые процедуры для большинства моих запросов, и никогда не использовал хранимые процедуры, я не могу понять, что я делаю неправильно. Следующий оператор выполняется без ошибок:
DELIMITER //
DROP PROCEDURE IF EXISTS test_db.test_proc//
CREATE PROCEDURE test_db.test_proc() SELECT 'foo'; //
DELIMITER ;
Но когда я пытаюсь вызвать его, используя:
CALL test_proc();
Я получаю следующую ошибку:
#1312 - PROCEDURE test_db.test_proc can't return a result set in the given context
Я выполняю эти операторы из phpmyadmin 3.2.4, PHP версии 5.2.12, а версия сервера mysql - 5.0.89-community.
Когда я пишу хранимую процедуру, которая возвращает параметр, а затем выбираю его, все работает нормально (например,):
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 ;
отлично работает, и когда я его называю:
CALL get_sum(@t); SELECT @t;
Я получаю сумму без проблем.
В конечном итоге мне нужно сделать необычный оператор SELECT, заключенный в хранимую процедуру, чтобы я мог его вызвать и вернуть несколько строк из нескольких полей. Сейчас я просто пытаюсь заставить любой выбрать рабочий.
Любая помощь очень ценится.