MySQL存储过程动态更改表名

我想在sql查询中更改表的动态名称。例如,我有下一个存储过程" title="存储过程">存储过程:

CREATE PROCEDURE NewProc(IN tableName varchar(64),IN message text)

BEGIN

INSERT INTO tableName VALUES (message);

END;

我需要在运行时更改 ,我可以这样做吗?谢谢。

回答:

您必须使用动态SQL来准备和执行SQL字符串,以实现您所描述的内容。

在准备之前,必须将动态表名称(或列名称或SQL关键字等)内插到SQL字符串中。您不能将查询参数用于这些动态元素。

当您将表名称插入到SQL查询中时,请小心避免SQL注入漏洞。例如,您应该通过在信息模式中查找表名来检查表名是否存在。

我同意@OMG Ponies的评论-

这是一种代码味道,您具有结构相同的多个表,因此您希望对完全相同的列进行完全相同的插入。代码气味并不能保证您的设计不好,但是值得考虑。

以上是 MySQL存储过程动态更改表名 的全部内容, 来源链接: utcz.com/qa/401459.html

回到顶部