[英]Dynamic variable names in MySQL
我需要在 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 中是不可能的。 我想要的目的是一连串的事件:
create procedure `eval`( in param text )
begin
set @sql = param;
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
end
调用过程call tests.eval('set @ABC = 120')
并且在当前会话中,您可以访问变量@ABC
call tests.eval('set @ABC = 120');
select @ABC;
如果您必须在 SQL 中执行此操作,您将需要名为Prepared Statements的 MySQL 功能。 尽管名称如此,但这与 JDBC、mysqli、PDO 和其他支持客户端语言的 api 提供的客户端prepare()功能不同。
为什么? SQL 不允许将数据库对象(表、列等)的名称作为绑定变量处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.