【发布时间】:2010-10-19 15:31:01
【问题描述】:
我刚刚开始创建一个存储函数,这是我的第一次,所以我遇到了一些问题。目前我使用SELECT test(); 调用该函数(test 是现在的函数名称)。我想向函数发送一个数字(用户名 ID)并返回用户名。
我通过使用SELECT test(1); 1 是表中用户的ID 来完成这项工作。这似乎在返回用户名时起作用,但如果我输入任何数字,也会返回相同的用户名。
BEGIN
DECLARE new_username VARCHAR(90);
SELECT `username` INTO new_username FROM `users` WHERE `ID` = ID;
return new_username;
END
我已将参数设置为ID int。
我是否认为关键字 INTO 会将用户名的值放入变量 new_username 中?如果我在没有 INTO 的情况下运行它,我会收到错误:
不允许从函数返回结果集
我有没有在这方面犯过任何明显的错误,我希望我没有做错完全。感谢您的任何建议:)。
编辑:我刚刚在我的表中添加了几行,我现在收到错误:
结果包含多于一行
完整的sql版本:
CREATE DEFINER=`elliotts`@`%` FUNCTION `test`(ID int)
RETURNS varchar(32) CHARSET latin1
BEGIN
DECLARE new_username VARCHAR(32);
SELECT `username`
INTO new_username
FROM `users`
WHERE `ID` = ID;
return new_username;
END
【问题讨论】:
标签: sql mysql stored-functions