【发布时间】:2011-01-22 13:18:20
【问题描述】:
我使用的平台(完美表单)要求我对大部分查询使用存储过程,并且从未使用过存储过程,我无法弄清楚我做错了什么。以下语句执行没有错误:
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 语句,这样我就可以调用它,并返回多个字段的多行。现在我只是想让 any 选择工作。
非常感谢任何帮助。
【问题讨论】:
-
当你说
CALL myproc();我假设你的意思是CALL test_proc();? -
是的 - 抱歉那是一个类型-o。有什么办法让我编辑吗?
-
是的,我认为您应该能够编辑自己的帖子。 (应该是某处的编辑链接。)
标签: mysql sql stored-procedures mysql-error-1312