在 MySQL 中执行字符串
编程中的常见任务之一是动态生成和执行 SQL 查询的能力。在 MySQL 中,此功能并不像 SQL Server 等其他语言那么简单,SQL Server 为此目的提供了 EXEC 命令。
问题:
用户想要转换 MSSQL 中使用 varchar 作为查询的存储过程。但是,MySQL 不支持 EXEC 和 EXECUTE,CALL 也无法工作。
解决方案:
虽然 MySQL 没有与 JavaScript 的 eval 函数完全相同的功能,有一种结合使用动态 SQL 和存储过程的解决方法。实现方法如下:
示例:
以下代码片段说明了解决方案:
SET @queryString = ( SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM ( SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM ( SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9 ) as qwe ) as www ); PREPARE stmt FROM @queryString; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @asd = NULL;
以上是如何在不使用 EXEC 或 EXECUTE 的情况下在 MySQL 中执行动态 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!