mysql - 如何设置标志 CLIENT_MULTI_STATEMENTS 以允许调用多个存储过程?
问题描述
如何设置标志 CLIENT_MULTI_STATEMENTS 以在单个存储过程中调用多个存储过程?我有 30 个存储过程,我想通过单击按钮来处理用户数据。似乎创建一个过程来执行其他 30 个过程是最简单的,但这会触发语法错误。在存储过程中执行一个存储过程就可以了,再添加一个就会产生错误。我的研究表明,通过设置 CLIENT_MULTI_STATEMENTS 标志,我可以执行多个程序,但是关于如何在 Joomla 等 CMS 中执行此操作的文档很少。我正在使用 Joomla 3 / mysql 5.7 / mariadb。我必须修改核心代码吗?或者有没有办法在外部设置标志?
解决方案
我无法弄清楚如何在 Joomla 中启用 CLIENT_MULTI_STATEMENTS。我能够通过使用这段代码将我的查询拆分为服务器将允许处理的查询数组来解决我的问题。
JDatabaseDriver::splitSql($query);
$query = "CALL ...;CALL...;...;";
$queries = $db->splitSql($query);
foreach( $queries AS $sql )
{
$db->setQuery($sql) ->execute();
$db->query();
}
干杯
推荐阅读
- c++ - G4GMLParser 评估器:语法错误 C++
- python - 在 Mac OS 中用 python 解析来自特定发件人的 Outlook 邮件
- python - 简单的打印命令在 VS Code Python 扩展中不显示任何输出
- c - 用 Visual Studio 2019 编译 udis86 给了我一个未解析的外部符号
- python - 如何将 .h5 模型转换为 .tflite 并获取图像标签?
- algorithm - 像 Desmos 这样的程序使用什么算法?
- reactjs - reactjs中删除请求后如何更新表?
- php - Laravel Eloquent updateOrCreate 函数不更新整行,而只更新一列
- wso2 - WSO2 ESB json-eval($)
- sql - 使用连接变量执行动态 SQL