4
我刚开始创建存储函数,这是我第一次,所以我有几个问题。目前我使用SELECT test();
来调用函数(测试是现在的函数名称)。我想发送一个号码给该功能(用户名ID)并返回用户名。mysql存储函数参数
我有这个工作通过使用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
运行它,我得到的错误:
Not allowed to return a result set from a function
有我在此做出任何明显的失误,我希望我没有做过完全错误。感谢您的任何建议:)。
编辑:我只是增加了一些行到我的表,我现在得到的错误:
Result consisted of more than one row
完整的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
谢谢我试过,但得到的错误: 无法在另一个存储的例程中创建一个功能 – Elliott 2010-10-19 15:56:25
@Elliot:在单独的脚本选项卡中执行代码 - 不知何故,你已经设法将其粘贴到一个现有的函数/存储过程声明。 – 2010-10-19 15:58:31
@Elliot:如果用户名为NULL,你想做什么?你知道如果有人用表中不存在的参数值运行函数,那么返回值也是NULL? – 2010-10-19 17:39:43