如何在MYSQL用户定义函数中通过另一个字符串变量引用一个局部变量名?

Posted

技术标签:

【中文标题】如何在MYSQL用户定义函数中通过另一个字符串变量引用一个局部变量名?【英文标题】:How to refer to a local variable name through another string variable in MYSQL user defined function? 【发布时间】:2019-02-21 18:15:37 【问题描述】:

我在 mysql 中有一个用户定义的函数,我需要在其中动态(间接)引用局部变量名。即

BEGIN
DECLARE D1 INT;
DECLARE i INT;
SET i = 1;
SET D1 = 7;
RETURN variable("D" & i);
END

注意:我在上面的例子中使用了假定的函数 variable() 来显示我想要的。

我希望函数返回 D1 的值,但使用另一个变量 i 间接引用其名称。我怎样才能做到这一点?请帮忙。谢谢。

【问题讨论】:

我认为在 MySQL 中没有任何方法可以做到这一点。为什么需要这样做?你想模拟一个数组吗?请改用临时表。 其实你可以用PREPARE做到这一点。 【参考方案1】:

尝试使用PREPAREEXECUTE

BEGIN
    DECLARE D1 INT;
    DECLARE i INT;
    DECLARE result INT;
    SET i = 1;
    SET D1 = 7;
    PREPARE stmt FROM CONCAT('SELECT D', i, ' INTO result');
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    RETURN result;
END

【讨论】:

谢谢巴马尔。我试图模拟一个数组。我还找到了一种使用 JSON 数组的方法。但你的解决方案正是我想要的。

以上是关于如何在MYSQL用户定义函数中通过另一个字符串变量引用一个局部变量名?的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 创建自定义函数

如何让php中通过字段和记录查询得到的mysql返回数据保持原有的数据类型

mysql用户自定义变量

在C中通过字符串运行命令

在 LOCATE 中使用用户定义的变量时,MySQL 非法混合排序规则

MySQL数据库 *实验16 变量表达式和函数