Mysql
 sql >> база данни >  >> RDS >> Mysql

Изпълнете множество заявки, разделени с точка и запетая, като използвате mysql Prepared Statement

Не, не е възможно. PREPARE / EXECUTE stmt може да изпълнява само една заявка наведнъж, много изрази не могат да се комбинират.
Вижте документацията:http://dev.mysql. com/doc/refman/5.0/en/prepare.html

Както и да е, за да опростя вашия код, бих създал проста процедура:

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

Разгледайте демонстрация:http://www.sqlfiddle.com/#! 2/6649a/6




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. комплексен sql подреждане по

  2. Защо не мога да използвам конкретно сортиране в MySQL?

  3. Използвайте резултати от една sql заявка в друга инструкция where (подзаявка?)

  4. Свързване с MySQL с помощта на Python

  5. Вмъкнете часовия формат h:mm pm/am в базата данни с помощта на MYSQL