Haben Sie die gesamte Abfrage beendet? Versuchen Sie, ein Trennzeichen festzulegen , und verwenden Sie es nach dem END, damit der Server weiß, dass Sie den Befehl beendet haben.
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 ;
Auch übrigens
Während DELETE FROM TABLE entfernt alle Daten aus der Tabelle TRUNCATE table geht damit schneller. Es sei denn, Sie haben gute Gründe, DELETE zu verwenden (es gibt sie), TRUNCATE könnte das sein, was Sie wollen.