我已经在MySQL中创建一个存储过程,如:MySQL存储过程
DELIMITER //
CREATE PROCEDURE test()
BEGIN
SELECT * FROM buyers;
END //
DELIMITER ;
,但是当我把它用,
call test()
它返回一个错误说:
#1312 - 程序ticketninja.test1无法返回给定上下文中的结果集
我已经在MySQL中创建一个存储过程,如:MySQL存储过程
DELIMITER //
CREATE PROCEDURE test()
BEGIN
SELECT * FROM buyers;
END //
DELIMITER ;
,但是当我把它用,
call test()
它返回一个错误说:
#1312 - 程序ticketninja.test1无法返回给定上下文中的结果集
返回结果集可以存储procedcure内但不是内存储的功能中使用的语句。这种禁止包括没有INTO var_list子句的SELECT语句以及其他语句,如SHOW,EXPLAIN和CHECK TABLE。对于在函数定义时可以确定返回结果集的语句,不允许从函数错误返回结果集(ER_SP_NO_RETSET)。对于仅在运行时才能确定以返回结果集的语句,PROCEDURE%s无法返回发生给定上下文中的结果集错误(ER_SP_BADSELECT)。
也许你需要使用临时表,就像这个例子:
确保您的代码(或客户端库)调用mysql_set_server_options()
启用MYSQL_OPTION_MULTI_STATEMENTS_ON
。
它给出了一个错误: #1172 - 结果包含多个行 – Kalx 2010-06-28 12:39:39
更新了我的帖子;链接的资源包含您可能可以调整的完整示例。 – miku 2010-06-28 12:51:51