Mysql 使用存储过程动态批量添加数据

Mysql 使用存储过程动态批量添加数据循环批量插入数据 — 创建存储过程 create procedure my_procedure01(in num int(2),out ii int(2)) begin declare i int…

Mysql 使用存储过程动态批量添加数据

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 **

attachments-2020-08-FGhslRUY5f30a8545a1d8.png

 

Mysql 使用存储过程动态批量添加数据

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6757.html

(0)
上一篇 2023-04-04
下一篇 2023-04-04

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注