我在一个输出中返回多行时遇到问题
返回了多个 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 - 结果由多行组成
有人可以告诉我如何解决这个问题吗?
亲切的问候
答案 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?