我需要在 MySQL 中创建一些存储函数,其工作方式与 getter/setter 完全相同,并按变量名称返回或设置变量。
例如get_variable('my_special')
将返回 @my_special variable
的值, set_variable('my_special', 23)
将设置@my_special := 23
.
问题是:如何将变量名称作为字符串设置或在 MySQL 中获取它?
史密斯like SET @{'my_special'} = 23
或$$var = 23
(如 PHP 中)
更新:根据我的任务,我发现这是不可能在mysql中做到的。我想要的目的是发生一系列事件:
- 我想将带有变量的查询存储为数据库中的 View 。 MySQL 拒绝使用变量存储 View ,但允许使用函数。
- 我决定创建将返回/设置变量的函数。但我在查询中有大约 4 个变量 - 因此创建 4 对函数来获取/设置变量效率不高。所以我想创建通用的 getter/setter。
- 按名称获取/设置变量的唯一方法是运行动态查询,这是在函数内部禁止的(仅在不太适合在 select 语句中使用的过程中)。
- 因此,由于这个问题 - 这是不可能的。
最佳答案
create procedure `eval`( in param text )
begin
set @sql = param;
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
end
调用过程calltests.eval('set @ABC = 120')
并在当前 session 中,您可以访问变量@ABC
call tests.eval('set @ABC = 120');
select @ABC;
关于mysql - MySQL 中的动态变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33670284/