У меня есть серия из 16 операторов PREPARE, EXECUTE и DEALLOCATE (в хранимой процедуре), каждая из которых вставляет строки в другую таблицу (от таблицы 1 до таблицы 16). например:
SET @Command1 = CONCAT("insert into TABLE1" , ...etc.. );
PREPARE stmt1 FROM @Command1 ;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SET @Command1 = CONCAT("insert into TABLE2" , ...etc.. );
PREPARE stmt1 FROM @Command1 ;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
.
.
.
SET @Command1 = CONCAT("insert into TABLE16" , ...etc.. );
PREPARE stmt1 FROM @Command1 ;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
Когда я выполняю хранимую процедуру, INSERT работает с перерывами. Иногда все 16 вставок работают, а иногда нет.
В последнем ВЫЗОВЕ хранимой процедуры работают первые 2 вставки (в TABLE1 и TABLE2 ) и последние 4 вставки (TABLE 13–16), но не вставки в таблицы 3–12.
Можете ли вы объяснить, почему? Не может быть, потому что я использую одну и ту же переменную/дескриптор command1 и stmt1?
CONCAT
, а не параметры (EXECUTE ... USING ...
)? - person outis   schedule 20.07.2011SELECT @Command1
; нет необходимости вINSERT INTO
другой таблице. Кстати, вставка в другую таблицу для отладки, почему вставка в таблицу не работает, может быть сложной;) - person wonk0   schedule 20.07.2011