举例子
createdefiner = root@`%` procedure insert_batch_test(IN START int(10), IN max_num int(10))
BEGINDECLAREi INT DEFAULT 0;SET autocommit = 0;REPEATSET i = i + 1;INSERT INTO test (std, score)VALUES (CEILING(RAND() * 10 + 100), CEILING(RAND() * 50 +50));UNTIL i = max_numEND REPEAT;COMMIT;END;这是一个 MySQL 存储过程,主要功能是往名为 test 的表中插入一批数据,插入的数据包括两个字段std 和score。以下是对存储过程代码的解释:
- 存储过程的名称是 insert_batch_test。
- 存储过程的定义者(创建者)是root,并且在任何主机上都能够被调用(definer =root@'%')。
- 存储过程接受两个输入参数:START和max_num,它们的数据类型都是整数(int(10))。
- 存储过程使用 DECLARE关键字声明了一个局部变量i,初始化为 0。
- SET autocommit = 0;语句将事务的自动提交模式关闭,这意味着插入数据后需要手动执行- COMMIT;才能提交事务。
- 使用 REPEAT ... UNTIL循环,循环体中包含了一条插入语句,向test 表中插入数据。- CEILING(RAND()*10+100)生成一个随机数,并将其上取整,确保在一定范围内。
- 插入的数据的std 和score 字段都是随机生成的整数。
- 循环的次数受到输入参数 max_num的控制。
 
- UNTIL i = max_num表示循环的条件,当- i达到- max_num时跳出循环。
- COMMIT;语句用于手动提交事务,确保之前的插入操作生效。
这个存储过程的作用是往表中插入一批随机生成的数据,批量插入的数量由输入参数 max_num 控制。如果你调用这个存储过程,需要提供适当的参数值。