Avez-vous terminé toute la requête ? Essayez de définir un délimiteur , et utilisez-le après END pour que le serveur sache que vous avez terminé la commande.
delimiter //
CREATE PROCEDURE fill_points(
IN size INT(10)
)
BEGIN
DECLARE i DOUBLE(10,1) DEFAULT size;
DECLARE lon FLOAT(7,4);
DECLARE lat FLOAT(6,4);
DECLARE position VARCHAR(100);
-- Deleting all.
DELETE FROM Points;
WHILE i > 0 DO
SET lon = RAND() * 360 - 180;
SET lat = RAND() * 180 - 90;
SET position = CONCAT( 'POINT(', lon, ' ', lat, ')' );
INSERT INTO Points(name, location) VALUES ( CONCAT('name_', i), GeomFromText(position) );
SET i = i - 1;
END WHILE;
END //
delimiter ;
Aussi, au fait
Tant que DELETE FROM TABLE
supprime toutes les données de la table, TRUNCATE table
le fait plus rapidement. Sauf si vous avez de bonnes raisons d'utiliser DELETE
(ils existent), TRUNCATE
peut-être ce que vous voulez.