mysql - 在 mysql 中将单行设置为变量

标签 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

当我尝试保存此函数时,它显示错误 1415:不允许从函数返回结果集。但我显然返回了一个 varchar 变量。

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

非常感谢

问候

最佳答案

您应该阅读有关 user-defined variables 之间差异的文档和 local 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

关于mysql - 在 mysql 中将单行设置为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6846476/

相关文章:

mysql - 如何通过电子邮件发送 mysql 命令的输出

mysql - Magento SQL - 将所有产品名称复制到short_description属性

Mysql Prepare Statement 执行时出错

SQL查询以查找列和行中的最大值

sql - FORMAT([Time], 'hh:mm' ) 返回 NULL

SQL:查找具有给定日期范围内每个月数据的记录

MySQL 对表数据使用 Pow()

mysql - 为什么这个简单的连接查询使用子查询会明显更快?

sql - 在 SQL/ORACLE 中将列的数据类型 "varchar' 更改为 "DATE"

c# - 如何在写入表之前检查数据是否存在