MySQL程序有多个结果

时间:2011-10-28 09:46:42

标签: mysql procedures

基本的想法是,当我调用一个过程时,我想获得一组数据而不仅仅是一个值(例如,将results设置为INT并选择COUNT(id) 。 我想知道如何更改此过程以获取多个值...

DELIMITER //
 CREATE PROCEDURE getnames(IN id_in INT,OUT results ???)
    BEGIN
        set results=(select name from people where id>id_in);
    END //
 DELIMITER ;

3 个答案:

答案 0 :(得分:2)

除非我误解了,否则您应该只是将您的程序改为以下

DELIMITER //
  CREATE PROCEDURE getnames(IN id_in INT)
    BEGIN
      select name from people where id>id_in;
    END //
DELIMITER ;

这将只返回select查询的结果,在本例中是一组名称。

答案 1 :(得分:1)

这里的问题是MySQL只允许存储过程中的表列数据类型。遗憾的是,这不包括任何类型的数组,列表或集合类型。

类似的问题有been asked before。阅读答案 - 他们可能会帮助你。其中之一包括以大VARCHAR数据类型传递逗号分隔列表。

返回结果的另一种方法是将结果存储在“结果表”中,调用该过程,然后从调用代码中引用“结果表”中的结果。

答案 2 :(得分:1)

MySQL中的参数不能是对象或表。如果要返回多个值,则尝试填充临时表或只在过程中运行SELECT语句并读取应用程序中的数据集。