不,这是不可能的. PREPARE / EXECUTE stmt一次只能执行一个查询,许多语句不能组合.参见文档:
http://dev.mysql.com/doc/refman/5.0/en/prepare.html
… a user variable that contains the text of the SQL statement. The text must represent a single statement, not multiple statements.
无论如何,为了简化你的代码我会创建一个简单的过程:
CREATE PROCEDURE exec_qry( p_sql varchar(100))
BEGIN
SET @tquery = p_sql;
PREPARE stmt FROM @tquery;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
/
我会以这种方式在主程序中调用此过程:
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');