it-swarm.com.de

Wie setze ich das Flag CLIENT_MULTI_STATEMENTS zum Aufrufen mehrerer gespeicherter Prozeduren in einer einzelnen gespeicherten Prozedur?

Wie setze ich das Flag CLIENT_MULTI_STATEMENTS zum Aufrufen mehrerer gespeicherter Prozeduren in einer einzelnen gespeicherten Prozedur?

Ich habe 30 gespeicherte Prozeduren, die ich mit einem Klick ausführen möchte, um Benutzerdaten zu verarbeiten. Es scheint am einfachsten zu sein, eine einzige Prozedur zum Ausführen der 30 anderen Prozeduren zu erstellen. Dies löst jedoch einen Syntaxfehler aus.
Das Ausführen einer gespeicherten Prozedur in einer gespeicherten Prozedur funktioniert einwandfrei, und das Hinzufügen einer weiteren Prozedur führt zu einem Fehler.
Meine Recherchen haben gezeigt, dass das CLIENT_MULTI_STATEMENTS flag Ich kann mehrere Prozeduren ausführen, aber es gibt wenig Dokumentation darüber, wie dies in einem CMS wie Joomla gemacht wird.

Ich arbeite mit Joomla 3/MySQL 5.7/Mariadb.
Muss ich den Kerncode ändern? Oder gibt es eine Möglichkeit, das Flag extern zu setzen?

Die Prozeduren werden in der unten angegebenen Reihenfolge aufgerufen. Die erste Prozedur wird immer ohne Probleme ausgeführt. Ich habe die Mariadb-Dokumentation und Mysql überprüft und jede Iteration der richtigen Syntax ausprobiert, die mir einfällt, weshalb ich denke, dass es sich um ein Flag-Problem handelt.
Standardmäßig erlaubt mysql die Ausführung mehrerer Anweisungen in dieser Version nicht, so wie ich es verstehe. Aus diesem Grund möchte ich herausfinden, wie die Flags gesetzt werden, auf die in der Dokumentation verwiesen wird.

CALL joomla3.Answers_to_Translated_RTN1();
CALL joomla3.Answers_to_Translated_RTN2();
CALL joomla3.UC_to_Results_RTN3();

...

MySQL sagte: # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von 'CALL joomla3.Answers_to_Translated_RTN2 (); CALL joomla3.UC_to_Results_RTN3 (); 'in Zeile 2

1
BabyCode123

Ich konnte nicht herausfinden, wie CLIENT_MULTI_STATEMENTS in Joomla aktiviert werden kann. Ich konnte mein Problem lösen, indem ich meine Abfragen mithilfe dieses Codebits in ein Array von Abfragen aufteilte, die der Server verarbeiten kann.

JDatabaseDriver::splitSql($query);

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

$queries = $db->splitSql($query);
foreach( $queries AS $sql ) {

$db->setQuery($sql) ->execute();
$db->query();
}

Prost

2
BabyCode123