如何在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】:
尝试使用PREPARE
和EXECUTE
:
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用户定义函数中通过另一个字符串变量引用一个局部变量名?的主要内容,如果未能解决你的问题,请参考以下文章
如何让php中通过字段和记录查询得到的mysql返回数据保持原有的数据类型