在mysql中将单行设置为变量

时间:2011-07-27 14:55:38

标签: mysql sql

我不是MYSQL开发人员,但只需编写一些代码。如果我在代码中做任何愚蠢的事情,请接受我的道歉。

我需要从userID = 1 limit 1的用户那里得到一行像select *,并将其分配给变量和访问列以进行一些计算。首先,这可能吗? 我试图一步一步地进行,这就是为什么我写了一个简单的函数,如下面的

    DELIMITER $$

CREATE DEFINER=`user`@`%` FUNCTION `GetReportees`(userid VARCHAR(255)) RETURNS varchar(50) CHARSET latin1
    DETERMINISTIC
BEGIN

    DECLARE Var1 varchar(120);
    DECLARE Var2 varchar(120);
    Select @Var1=forename, @Var2=surname from company_users.users where userID = @userid limit 1;
    return @Var1;
END

当我尝试保存此功能时,它会显示ERROR 1415: Not allowed to return a result set from a function。但我清楚地返回一个varchar变量。

有谁能告诉我我做错了什么?我相信它不应该那么难。

非常感谢

此致

1 个答案:

答案 0 :(得分:3)

您应该阅读有关user-defined variableslocal variables之间差异的文档。

在您的示例中,您有一个参数和2个局部变量,因此您应该像这样使用它们:

    DELIMITER $$

CREATE DEFINER=`user`@`%` FUNCTION `GetReportees`(p_userid VARCHAR(255)) 
    RETURNS varchar(120) CHARSET latin1
    DETERMINISTIC
BEGIN

    DECLARE Var1 varchar(120);
    DECLARE Var2 varchar(120);

    Select forename, surname 
    into Var1,Var2
    from company_users.users 
    where userID = p_userid 
    limit 1;

    return Var1;
END