sql >> Base de Datos >  >> RDS >> Mysql

Ejecute múltiples consultas separadas por punto y coma utilizando la declaración preparada mysql

No, no es posible. PREPARE / EXECUTE stmt puede ejecutar solo una consulta a la vez, muchas declaraciones no se pueden combinar.
Ver documentación:http://dev.mysql. com/doc/refman/5.0/en/prepare.html

De todos modos, para simplificar su código, crearía un procedimiento simple:

CREATE PROCEDURE exec_qry( p_sql varchar(100))
BEGIN
  SET @tquery = p_sql;
  PREPARE stmt FROM @tquery;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END 
/

y llamaría a este procedimiento en el procedimiento principal, de esta manera:

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');

Eche un vistazo a una demostración:http://www.sqlfiddle.com/#! 2/6649a/6