mysql存储过程多行返回

时间:2012-02-21 14:11:29

标签: mysql stored-procedures

我在一个输出中返回多行时遇到问题

返回了多个 user_roleID。程序如下:

CREATE PROCEDURE Sample(OUT userName VARCHAR(30))
BEGIN
SELECT user_roleID INTO userName FROM users;
END

我想在打印输出值(userName)

时获取数据列表
call Sample1(@emp);
select @emp;

但是当我执行此命令时,我收到以下错误报告:

  

1172 - 结果由多行组成

有人可以告诉我如何解决这个问题吗?

亲切的问候

2 个答案:

答案 0 :(得分:1)

例如,如果您要创建一个存储函数来返回基于用户名的ID,那么以下内容将起作用

CREATE FUNCTION Sample(inUserName VARCHAR(255)) RETURNS INT(11)
BEGIN
    DECLARE returnValue INT;
    SELECT user_roleID INTO returnValue FROM users WHERE userName = inUserName LIMIT 1;
    RETURN returnValue;
END

这将使用SELECT Sample('SomeUserName') AS userID;

进行调用

答案 1 :(得分:0)

您不能以这种方式存储多行。要返回多行,您必须定义游标或直接返回它,而不是在本地存储它,如果不操作数据:

CREATE FUNCTION Sample(inUserName VARCHAR(255)) RETURNS INT(11)
BEGIN
    RETURN SELECT user_roleID FROM users WHERE userName = inUserName;
END

为什么不使用SQL?