Har du avslutat hela frågan? Testa att ställa in en avgränsare , och använd den efter END så att servern vet att du avslutade kommandot.
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 ;
Också av by
Medan DELETE FROM TABLE
tar bort all data från tabellen, TRUNCATE table
gör det snabbare. Såvida du inte har goda skäl att använda DELETE
(de finns), TRUNCATE
kan vara vad du vill ha.