Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer et exécuter des procédures dans MySQL Workbench

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.