MySQL non supporta l'esecuzione di blocchi anonimi di codice di stored procedure.
È necessario creare una stored procedure incluso quel codice e quindi richiamarla.
Inoltre, mancava il punto e virgola alla fine delle istruzioni di inserimento. L'ho risolto. Probabilmente vorresti usare concat() invece di + per generare i nomi, ma lascerò a te questa modifica.
Creare la procedura:
DELIMITER $$
DROP PROCEDURE IF EXISTS insert_ten_rows $$
CREATE PROCEDURE insert_ten_rows()
BEGIN
DECLARE crs INT DEFAULT 0;
WHILE crs < 10 DO
INSERT INTO `continent`(`name`) VALUES ('cont'+crs);
SET crs = crs + 1;
END WHILE;
END $$
DELIMITER ;
avvalersi della procedura:
CALL insert_ten_rows();
fonte
2012-07-16 14:33:21
'BEGIN DECLARE CRS INT; SET @crs = 0; WHILE crs <10 DO INSERISCI INTO \ 'continent \' (\ 'nome \') VALORI ('cont' + @ crs) SET @crs = crs + 1; FINE MENTRE; END; 'non funziona in questo modo sia – NiCU
assegnare con': = ' – diEcho
l'errore che ottengo dice che: # 1064 - Hai un errore nella sintassi SQL; controlla il manuale che corrisponde alla versione del tuo server MySQL per la sintassi corretta da usare vicino a "DECLARE @crs INT" – NiCU