MYSQL中创建存储过程实现向表中循环插入数据

本文介绍如何在MySQL中创建存储过程,实现循环插入数据到表中。通过具体示例,展示了从建表到定义存储过程的全过程,并提供了执行及查询存储过程的方法。

首先在test数据库中先创建一个表test:

CREATE TABLE test( 
ID INT PRIMARY KEY AUTO_INCREMENT ,
test_name VARCHAR(20),
test_num INT);

现在,我们来创建一个存储过程,实现向表里循环插入数据;

delimiter $                                                           /*(意思是mysql语句的结尾换成以$结束,mysql默认是;结束)*/

create procedure pro1(in n int)                               /*创建一个名为pro1的存储过程,调用存储过程时,可以通过输入参数n来指定循环的次数*/

begin                                                                 /*开始*/

declare num001 , num002 int;                                /*定义num001和num002的数据类型为int*/

set num001 = 1 , num002 = 10;                             /*设置num001=1,num002=10*/

while n - num001 >= 0 do                                     /*当num001小于等于n时执行下面的操作*/

insert into test(test_name,test_num)

values(concat("zhangsan" , num001) , num002);        /*在test表中插入数据test_name=zhangsan+num001,test_num=num002,contat意为将张三和num001连起来*/

set num001=num001+1,num002=num002*2;             /*设置num001=num001+1,num002=num002*2*/

end while;                                                          /*当num>100时,不再执行插入操作循环结束*/

end $                                                                /* 存储过程结束*/

delimiter ;                                                          /*(mysql语句的结尾换成以;结束)*/

执行存储过程:

call pro1(100) ;

执行成功后,数据如下所示:

 

 
如果想查询test数据库存在哪些存储过程,则执行:
select * from mysql.proc where db = 'test' and type = 'procedure'  ;
结果如下图所示:

原地址http://www.cnblogs.com/wangjikun/p/5685489.html
MySQL中,存储过程可以用来执行一系列SQL语句,包括查询数据和将数据插入到新中。以下是一个简单的示例,展示了如何实现这一过程: 1. 创建两个示例:`source_table` 和 `target_table`。 2. 编写一个存储过程,从 `source_table` 中查询数据并将其插入到 `target_table` 中。 ### 示例结构 ```sql -- 创建 CREATE TABLE source_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), value INT ); -- 创建目标 CREATE TABLE target_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), value INT ); ``` ### 存储过程实现 ```sql -- 创建存储过程 DELIMITER // CREATE PROCEDURE insert_into_target() BEGIN -- 从源中查询数据 DECLARE done INT DEFAULT FALSE; DECLARE v_id INT; DECLARE v_name VARCHAR(100); DECLARE v_value INT; DECLARE cur CURSOR FOR SELECT id, name, value FROM source_table; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 打开游标 OPEN cur; -- 开始循环 read_loop: LOOP FETCH cur INTO v_id, v_name, v_value; IF done THEN LEAVE read_loop; END IF; -- 插入数据到目标 INSERT INTO target_table (name, value) VALUES (v_name, v_value); END LOOP; -- 关闭游标 CLOSE cur; END // DELIMITER ; ``` ### 执行存储过程 ```sql -- 插入示例数据到源 INSERT INTO source_table (name, value) VALUES ('example1', 100), ('example2', 200), ('example3', 300); -- 调用存储过程 CALL insert_into_target(); -- 查询目标数据 SELECT * FROM target_table; ``` ### 解释 1. **创建**:首先创建两个 `source_table` 和 `target_table`,用于存储源数据和目标数据。 2. **创建存储过程**:`insert_into_target` 存储过程使用游标从 `source_table` 中查询数据,并将其插入到 `target_table` 中。 3. **执行存储过程**:插入一些示例数据到 `source_table`,然后调用存储过程数据插入到 `target_table` 中,最后查询目标数据。 通过这种方式,你可以实现从一张查询数据并将其插入到另一张中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值