首页 > 数据库 > mysql教程 > 如何在不使用 EXEC 或 EXECUTE 的情况下在 MySQL 中执行动态 SQL 查询?

如何在不使用 EXEC 或 EXECUTE 的情况下在 MySQL 中执行动态 SQL 查询?

DDD
发布: 2024-12-17 01:45:25
原创
130 人浏览过

How Can I Execute Dynamic SQL Queries in MySQL Without Using EXEC or EXECUTE?

在 MySQL 中执行字符串

编程中的常见任务之一是动态生成和执行 SQL 查询的能力。在 MySQL 中,此功能并不像 SQL Server 等其他语言那么简单,SQL Server 为此目的提供了 EXEC 命令。

问题:

用户想要转换 MSSQL 中使用 varchar 作为查询的存储过程。但是,MySQL 不支持 EXEC 和 EXECUTE,CALL 也无法工作。

解决方案:

虽然 MySQL 没有与 JavaScript 的 eval 函数完全相同的功能,有一种结合使用动态 SQL 和存储过程的解决方法。实现方法如下:

  1. 准备动态查询:使用派生表连接要插入的值,从而生成包含 SQL 查询的单个字符串。
  2. 创建准备语句:使用 PREPARE 将动态查询分配给准备好的语句变量
  3. 执行准备好的语句:使用 EXECUTE 语句执行准备好的语句。
  4. 释放准备好的语句:执行查询后,使用 DEALLOCATE PREPARE 取消分配准备好的语句变量

示例:

以下代码片段说明了解决方案:

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板