mysql存储过程使用,批量插入大量随机记录

存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,方便数据库表字段的隐藏和封装。相对于函数来说,存储过程来说可以返回多个值,参数可以有IN,OUT,INOUT三种类型,而函数只能有一个返回值。存储过程一般是作为一个独立的部分来执行,使用call 存储过程名,而函数可以作为查询语句的一个部分来调用(SELECT调用)。存储过程完成的功能也更加复杂强大,函数则是只针对一个功能。

比如有一个employee表,再创建了一个这样的批量插入记录的存储过程create procedure insertemp(in nInsertNum int)

BEGIN
    #Routine body goes here...
    DECLARE n int DEFAULT 0; //声明一个整形n变量,默认值是0
    myloop:LOOP //启动一个loop循环

    insert into employee(name,age,dept_id) 
    values(substring(md5(rand()),1,6),
    floor(rand()*30)+20,
    floor(rand()*(select max(id) from department))+1);
    SET n=n+1; //递增1

    IF n = nInsertNum THEN //如果n等于外部传入的参数,就是要插入的数目,则退出loop循环
        LEAVE myloop;
    END IF; //结束if语句

    END LOOP myloop; //结束loop循环
END

说明:substring(md5(rand()),1,6,这个是产生一个6个长度的随机字符串,floor(rand()*30)+20,这是产生一个30以内的随机整数(0-29之间),然后再加20,最终的随机数就是20-49之间。

然后执行这个存储过程,call insertemp(100); 插入100条记录,结果如下:

mysql存储过程使用,批量插入大量随机记录