sql >> Database >  >> RDS >> Mysql

Voer meerdere door puntkomma's gescheiden query's uit met behulp van mysql Prepared Statement

Nee, het is niet mogelijk. PREPARE / EXECUTE stmt kan slechts één query tegelijk uitvoeren, veel instructies kunnen niet worden gecombineerd.
Zie documentatie:http://dev.mysql. com/doc/refman/5.0/en/prepare.html

Hoe dan ook, om uw code te vereenvoudigen, zou ik een eenvoudige procedure maken:

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

en ik zou deze procedure in de hoofdprocedure als volgt noemen:

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

Bekijk een demo:http://www.sqlfiddle.com/#! 2/6649a/6




  1. Het sneeuwvlokschema

  2. Probleem bij het construeren van een where-clausule om null/0-waarden op te nemen

  3. Postgres, table1 links join table2 met slechts 1 rij per ID in table1

  4. Hoe een versie 4 (willekeurige) UUID op Oracle te genereren?