我在Mysql中创建了一个存储过程,如:
DELIMITER //
CREATE PROCEDURE test()
BEGIN
SELECT * FROM buyers;
END //
DELIMITER ;
但是当我使用它时,
call test()
它返回错误说:
#1312 - PROCEDURE ticketninja.test1无法在给定的上下文中返回结果集
答案 0 :(得分:2)
返回结果集的语句可以在存储过程中使用,但不能在存储的函数中使用。此禁止包括没有INTO var_list子句的SELECT语句和其他语句,如SHOW,EXPLAIN和CHECK TABLE。对于可以在函数定义时确定以返回结果集的语句,将发生不允许从函数错误返回结果集(ER_SP_NO_RETSET)。对于只能在运行时确定以返回结果集的语句,PROCEDURE%s无法在给定的上下文错误中返回结果集(ER_SP_BADSELECT)。
也许您需要使用临时表,例如:
答案 1 :(得分:2)
确保您的代码(或客户端库)在启用mysql_set_server_options()
的情况下调用MYSQL_OPTION_MULTI_STATEMENTS_ON
。