-
No:le istruzioni composte possono essere utilizzate solo all'interno del corpo dei programmi memorizzati.
-
START TRANSACTION;
eCOMMIT;
sono affermazioni separate. Se si desidera che il corpo di un programma memorizzato contenga più istruzioni, sarà necessario racchiudere tali istruzioni in una sorta di blocco di istruzioni composte comeBEGIN ... END
(che è simile a racchiudere un blocco di istruzioni tra parentesi graffe{ ... }
all'interno di un linguaggio simile al C).Detto questo, potresti avere un programma memorizzato che contiene solo l'istruzione singola
START TRANSACTION;
oCOMMIT;
—un programma del genere non richiederebbe alcun blocco di istruzioni composte e avvierebbe semplicemente una nuova transazione / commetterebbe rispettivamente la corrente.Al di fuori di un programma memorizzato, dove i blocchi di istruzioni composte non sono consentiti, puoi emettere
START TRANSACTION;
eCOMMIT;
dichiarazioni come e quando richiesto. -
LOOP
è anche un blocco di istruzioni composto, che è valido solo all'interno di una stored procedure. Non è necessario per racchiudere unLOOP
blocco all'interno di unBEGIN ... END
blocco, sebbene sia normale (perché altrimenti è difficile eseguire qualsiasi inizializzazione del ciclo richiesta).
Nel tuo caso, in cui apparentemente desideri inserire dati in una tabella da un costrutto di loop, dovrai:
-
definisci un programma memorizzato in cui usi
LOOP
; -
iterare un ciclo in un programma esterno che esegue query di database su ogni iterazione; o
-
ridefinisci la tua logica in termini di insiemi su cui SQL può operare direttamente.