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.