-
Nein:Zusammengesetzte Anweisungen können nur im Hauptteil von gespeicherten Programmen verwendet werden.
-
START TRANSACTION;
undCOMMIT;
sind getrennte Erklärungen. Wenn Sie möchten, dass der Hauptteil eines gespeicherten Programms mehrere Anweisungen enthält, muss es diese Anweisungen in eine Art zusammengesetzten Anweisungsblock wieBEGIN ... END
einschließen (was dem Einschließen eines Blocks von Anweisungen in geschweifte Klammern ähnelt{ ... }
innerhalb einer C-ähnlichen Sprache).Das heißt, Sie könnten ein gespeichertes Programm haben, das nur die Einzelanweisung
START TRANSACTION;
enthält oderCOMMIT;
– Ein solches Programm würde keinen zusammengesetzten Anweisungsblock erfordern und würde lediglich eine neue Transaktion beginnen bzw. die aktuelle Transaktion festschreiben.Außerhalb eines gespeicherten Programms, wo zusammengesetzte Anweisungsblöcke nicht erlaubt sind, können Sie
START TRANSACTION;
eingeben undCOMMIT;
Anweisungen nach Bedarf. -
LOOP
ist auch ein zusammengesetzter Anweisungsblock, der nur innerhalb einer gespeicherten Prozedur gültig ist. Es ist nicht notwendig um eineLOOP
einzuschließen Block innerhalb einesBEGIN ... END
blockieren, obwohl es üblich ist (da es sonst schwierig ist, eine erforderliche Schleifeninitialisierung durchzuführen).
In Ihrem Fall, in dem Sie anscheinend Daten aus einem Schleifenkonstrukt in eine Tabelle einfügen möchten, müssen Sie entweder:
-
Definieren Sie ein gespeichertes Programm, in dem Sie
LOOP
verwenden; -
iterieren Sie eine Schleife in einem externen Programm, das Datenbankabfragen bei jeder Iteration ausführt; oder
-
Definieren Sie Ihre Logik in Bezug auf Mengen neu, auf denen SQL direkt operieren kann.