基本的想法是,当我调用一个过程时,我想获得一组数据而不仅仅是一个值(例如,将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 ;
答案 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语句并读取应用程序中的数据集。