在mysql中设置单行变量



我不是MYSQL开发人员,只是必须写一些代码。如果我在代码中做了什么愚蠢的事情,请接受我的道歉。

我的需要是获得单行,如select *从用户,其中userID = 1限制1,并将其分配给一个变量和访问列做一些计算。首先,这可能吗?我试着一步一步来,这就是为什么我写了一个简单的函数,像下面的

    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变量。

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

多谢

您应该阅读有关用户定义变量和局部变量的区别的文档。

在你的例子中,你有一个参数和两个局部变量,所以你应该这样使用它们:

    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

最新更新