Mysql存储过程

时间:2010-06-28 11:23:19

标签: mysql stored-procedures mysql-error-1312

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

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

但是当我使用它时,

call test()

它返回错误说:

  

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

2 个答案:

答案 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