2017-01-12 3 views
0

Я хочу выполнить около 100 Update/Delete Динамические запросы, сделанные с помощью PHP и отправленные в Хранимую процедуру MySQL.Несколько динамических запросов в MySQL

В настоящее время я могу выполнить ни одного динамический запрос в хранимой процедуре с этим кодом, как

CREATE PROCEDURE `updateBill`(IN `queryIs` VARCHAR(10000)) 
BEGIN 
    SET @t1 = queryIs; 
    PREPARE stmt3 FROM @t1; 
    EXECUTE stmt3; 
    DEALLOCATE PREPARE stmt3; 
END 

Но это может выполнить только один запрос завершился с ;. Но у меня есть около 100 динамических запросов и хочу выполнять их как

update abc set a=1, b=0 where c=5; 
update abc set a=7, b=3 where c=6; 
delete from abc where c = 3; 
update abc set a=9, b=2 where c=8; 
update abc set a=2, b=1 where c=12; 
delete from abc where c = 10; 

Все из вышеперечисленных запросов PHP из данных, посылаемых от клиентских данных. Я не хочу быстро создавать соединение с сервером и выполнять выше запросы один за другим, но я просто хочу отправить выше запросы, как на одну строку в параметре хранимой процедуры, а затем создать из него динамические запросы, а затем выполнить все выше.

+0

Вы можете, конечно, просто разделить параметр, например. ';' (или добавить второй параметр, который содержит длины, это облегчит различие между строкой, содержащей ''; ''и фактическим разделителем) и выполнить их в цикле. С другой стороны, нет абсолютно никаких оснований для этого. Просто откройте соединение и выполните запросы один за другим (или подготовленные) с php. Это на самом деле быстрее, чем использование динамического sql, может делать больше и в противном случае будет делать то же самое. (Для этого и есть api. Если бы вы могли оптимизировать его, выполнив его по-своему, это было бы уже реализовано). – Solarflare

+0

А также вы можете использовать multiquery в php, если вы абсолютно хотите отправить его сразу, поэтому один запрос вызывается всей цепочкой, а не с помощью хранимой процедуры. Это не быстрее, но может облегчить вам (я не совсем уверен, в чем причина вашей идеи). – Solarflare

ответ

0

Это не было на самом деле на самом деле на 100% понятным для меня, что ваше намерение - , но, похоже, вам нужно выполнить обработку строк в вашей процедуре, которая является большой работой, если вы хотите предсказать все возможные случаи.