-
Nie:instrukcji złożonych można używać tylko w treści zapisanych programów.
-
START TRANSACTION;
iCOMMIT;
są oddzielnymi oświadczeniami. Jeśli chcesz, aby ciało przechowywanego programu zawierało wiele instrukcji, będzie musiało ująć te instrukcje w pewnego rodzaju złożonym bloku instrukcji, takim jakBEGIN ... END
(co jest podobne do zamykania bloku instrukcji w nawiasach klamrowych{ ... }
w języku podobnym do C).To powiedziawszy, możesz mieć zapisany program, który zawiera tylko jedno polecenie
START TRANSACTION;
lubCOMMIT;
— taki program nie wymagałby żadnego bloku instrukcji złożonych i po prostu rozpoczynałby odpowiednio nową / zatwierdzającą bieżącą transakcję.Poza programem przechowywanym, gdzie bloki instrukcji złożonych nie są dozwolone, możesz wydać
START TRANSACTION;
iCOMMIT;
oświadczenia w razie potrzeby. -
LOOP
jest również blokiem instrukcji złożonych, który jest prawidłowy tylko w ramach procedury składowanej. Nie jest konieczne aby dołączyćLOOP
blok wBEGIN ... END
bloku, chociaż jest to normalne (ponieważ w przeciwnym razie trudno jest wykonać dowolną wymaganą inicjalizację pętli).
W twoim przypadku, gdy najwyraźniej chcesz wstawić dane do tabeli z konstrukcji zapętlonej, będziesz musiał:
-
zdefiniuj program przechowywany, w którym używasz
LOOP
; -
iterować pętlę w zewnętrznym programie, który wykonuje zapytania do bazy danych w każdej iteracji; lub
-
przedefiniuj swoją logikę w kategoriach zestawów, na których SQL może bezpośrednio operować.