3

我在 Mysql 中创建了一个存储过程,如下所示:

DELIMITER //
CREATE PROCEDURE test()
BEGIN
  SELECT *  FROM buyers;
END //
DELIMITER ;

但是当我调用它时,

call test()

它返回一个错误说:

#1312 - PROCEDURE ticketninja.test1 无法返回给定上下文中的结果集

4

2 回答 2

2

返回结果集的语句可以在存储过程中使用,但不能在存储函数中使用。此禁止包括没有 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)。

也许你需要使用一个临时表,比如这个例子:

于 2010-06-28T11:36:51.173 回答
2

mysql_set_server_options()确保您的代码(或客户端库)调用MYSQL_OPTION_MULTI_STATEMENTS_ON启用。

于 2010-06-28T11:49:15.637 回答