如何设置标志CLIENT_MULTI_STATEMENTS以允许调用多个存储过程?

时间:2018-09-12 23:01:59

标签: mysql joomla mariadb

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

1 个答案:

答案 0 :(得分:0)

我无法弄清楚如何在Joomla中启用CLIENT_MULTI_STATEMENTS。通过使用以下代码,我可以将查询拆分为服务器允许处理的查询数组,从而解决了我的问题。

JDatabaseDriver::splitSql($query);

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

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

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

欢呼