0

基本思想是,当我调用一个程序时,我想获得一组数据而不仅仅是一个值(例如通过设置resultsINT和选择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 ;
4

3 回答 3

2

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

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

这将简单地返回选择查询的结果,在本例中为名称集。

于 2011-10-28T09:54:26.170 回答
1

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

之前有人问过类似的问题。阅读答案 - 它们可能会对您有所帮助。VARCHAR其中之一包括以大数据类型传递一个逗号分隔的列表。

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

于 2011-10-28T09:56:23.603 回答
1

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

于 2011-10-28T09:59:22.133 回答