sql >> Databasteknik >  >> RDS >> Mysql

Utför flera semikolonseparerade frågor med mysql Prepared Statement

Nej, det är inte möjligt. PREPARE / EXECUTE stmt kan endast köra en fråga åt gången, många satser kan inte kombineras.
Se dokumentation:http://dev.mysql. com/doc/refman/5.0/en/prepare.html

Hur som helst, för att förenkla din kod skulle jag skapa en enkel procedur:

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

och jag skulle kalla detta förfarande i huvudförfarandet, på detta sätt:

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

Ta en titt på en demo:http://www.sqlfiddle.com/#! 2/6649a/6




  1. VÄLJ och lås en rad och sedan UPPDATERA

  2. Hur man konverterar datumsträngar till tidsstämpel utan att veta datumformatet

  3. Batchinfogning av data till MySQL-databas med hjälp av php

  4. Använder du flera Oracle JDBC-drivrutiner i en Java-applikation?