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