mysql - MySQL 中的动态变量名称

标签 mysql function variables

我需要在 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;

Source

关于mysql - MySQL 中的动态变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33670284/

相关文章:

javascript - 在另一个 JS 文件中调用同名函数

C# 变量初始化与赋值

php - 正确的语法以在iframe中回显变量

php - PHP 中带有 if 条件的双 foreach

MySQL 从日期时间中选择特定日期

php - 在脚本中没有多个相同代码实例的情况下重复 javascript 功能

sql-server - 将变量传递给 xp_cmdshell

MySQL IN() 子句多次返回

c - 函数局部变量的 return 如何工作?

c++ - C++(或 C)中关于指针的函数作用域