Nein, das ist nicht möglich. PREPARE / EXECUTE stmt
kann jeweils nur eine Abfrage ausführen, viele Anweisungen können nicht kombiniert werden.
Siehe Dokumentation:http://dev.mysql. com/doc/refman/5.0/en/prepare.html
Wie auch immer, um Ihren Code zu vereinfachen, würde ich eine einfache Prozedur erstellen:
CREATE PROCEDURE exec_qry( p_sql varchar(100))
BEGIN
SET @tquery = p_sql;
PREPARE stmt FROM @tquery;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
/
und ich würde diese Prozedur in der Hauptprozedur folgendermaßen aufrufen:
CALL exec_qry( 'CREATE TABLE t2 AS SELECT * FROM test');
CALL exec_qry( 'SELECT * FROM t2');
CALL exec_qry( 'SELECT count(*) FROM t2');
CALL exec_qry( 'SELECT avg(x) FROM t2');
CALL exec_qry( 'DROP TABLE t2');
Sehen Sie sich eine Demo an:http://www.sqlfiddle.com/#! 2/6649a/6