-
Ne:složené příkazy lze použít pouze v těle uložených programů.
-
START TRANSACTION;
aCOMMIT;
jsou samostatná prohlášení. Pokud chcete, aby tělo uloženého programu obsahovalo více příkazů, bude muset tyto příkazy uzavřít do nějakého složeného bloku příkazů, jako jeBEGIN ... END
(což je podobné jako uzavření bloku příkazů do složených závorek{ ... }
v jazyce podobném C).To znamená, že můžete mít uložený program, který obsahuje pouze jeden příkaz
START TRANSACTION;
neboCOMMIT;
—Takový program by nevyžadoval žádný složený blok příkazů a pouze by zahájil novou / potvrzoval aktuální transakci.Mimo uložený program, kde nejsou povoleny složené příkazové bloky, můžete zadat
START TRANSACTION;
aCOMMIT;
výpisy podle potřeby &kdy. -
LOOP
je také složený příkazový blok, který je platný pouze v rámci uložené procedury. Není to nezbytné pro uzavřeníLOOP
bloku v rámciBEGIN ... END
blok, i když je to obvyklé (protože jinak je obtížné provést jakoukoli požadovanou inicializaci smyčky).
Ve vašem případě, kdy zjevně chcete vložit data do tabulky ze smyčkové konstrukce, budete muset:
-
definujte uložený program, ve kterém používáte
LOOP
; -
iterovat smyčku v externím programu, který provádí databázové dotazy při každé iteraci; nebo
-
předefinujte svou logiku z hlediska sad, na kterých může SQL přímo pracovat.