大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说Mysql 使用存储过程动态批量添加数据,希望您对编程的造诣更进一步.
循环批量插入数据
-- 创建存储过程 create procedure my_procedure01(in num int(2),out ii int(2)) begin declare i int(2) default 0; declare str int(2); while i < num do set str = round(rand()*100) + 1; insert into p_procedure (name) values (str); set i = i + 1; end while; set ii = i; end; -- 删除存储过程 drop procedure my_procedure01; -- 调用存储过程 call my_procedure01(2, @y); -- 查询存储过程的输出 select @y;
拼接批量插入数据
-- 创建存储过程 create procedure my_procedure02(in num int(2),out ii text) begin declare i int(2) default 0; declare str int(2); declare data text; while i < num do set str = round(rand()*100) + 1; set data = concat("(", str, ")"); -- 存储 alldata 内容的变量必须是全局变量,使用 @ 符修饰 if @insertData = "" then set @insertData = CONCAT_WS(",", data); else set @insertData = CONCAT_WS(",", @insertData, data); end if; set i = i + 1; end while; -- 存储 sql 内容的变量必须是全局变量,使用 @ 符修饰 set @sql = CONCAT("INSERT INTO p_procedure (name) VALUES ", @insertData); -- 预处理 PREPARE ins from @sql; EXECUTE ins; DEALLOCATE PREPARE ins; -- 清空全局 @insertData 数据,否则数据会一直追加 set @insertData = ""; -- 输出 sql set ii = @sql; end; -- 调用存储过程 call my_procedure02(2, @ii); -- 查询存储过程的输出 select @ii; -- 外部重置全局变量 set @insertData = ""; -- 删除存储过程 drop procedure my_procedure02; -- 存储过程-实例02 - end
**执行的 sql **
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6757.html