首页 > 解决方案 > 如何设置标志 CLIENT_MULTI_STATEMENTS 以允许调用多个存储过程?

问题描述

如何设置标志 CLIENT_MULTI_STATEMENTS 以在单个存储过程中调用多个存储过程?我有 30 个存储过程,我想通过单击按钮来处理用户数据。似乎创建一个过程来执行其他 30 个过程是最简单的,但这会触发语法错误。在存储过程中执行一个存储过程就可以了,再添加一个就会产生错误。我的研究表明,通过设置 CLIENT_MULTI_STATEMENTS 标志,我可以执行多个程序,但是关于如何在 Joomla 等 CMS 中执行此操作的文档很少。我正在使用 Joomla 3 / mysql 5.7 / mariadb。我必须修改核心代码吗?或者有没有办法在外部设置标志?

标签: mysqljoomlamariadb

解决方案


我无法弄清楚如何在 Joomla 中启用 CLIENT_MULTI_STATEMENTS。我能够通过使用这段代码将我的查询拆分为服务器将允许处理的查询数组来解决我的问题。

JDatabaseDriver::splitSql($query);

$query =  "CALL ...;CALL...;...;";

$queries = $db->splitSql($query);

foreach( $queries AS $sql ) 
{
$db->setQuery($sql) ->execute();
$db->query();
}

干杯


推荐阅读