Mysql 使用存储过程动态批量添加数据(mysql怎么导入sql文件)

网友投稿 809 2022-08-29

Mysql 使用存储过程动态批量添加数据(mysql怎么导入sql文件)

Mysql 使用存储过程动态批量添加数据(mysql怎么导入sql文件)

循环批量插入数据

-- 创建存储过程

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:codeforces 869E The Untended Antiquity
下一篇:bzoj 2286 [Sdoi2011]消耗战
相关文章

 发表评论

暂时没有评论,来抢沙发吧~