MySql 存储过程使用游标循环插入数据示例
2010-03-05 09:49
1386 查看
本示例通过 while...end while 循环控制游标来实现插入表记录。
DROP PROCEDURE IF exists pro_initCategoryForTradingEntity;
create procedure pro_initCategoryForTradingEntity(tradingEntityId int)
begin
declare f_parent,entityId int;
declare b int default 0; /*是否达到记录的末尾控制变量*/
declare f_name varchar(100);
DECLARE cur_1 CURSOR FOR select FName,FParent,tradingEntityId from t_category_tag;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET b = 1;
OPEN cur_1;
FETCH cur_1 INTO f_name, f_parent, entityId; /*获取第一条记录*/
while b<>1 do
insert into t_category(FName,FParent,FTradingEntity) values(f_name, f_parent, entityId);
FETCH cur_1 INTO f_name, f_parent, entityId; /*取下一条记录*/
end while;
close cur_1;
end;
call pro_initCategoryForTradingEntity(2);
另外循环也可以用repeat...end repeat 来循环控制,以下是我最初所做的示例代码,但结果是插入的实际数据总数多出一条,在此列出作为一个反面示例代码。当然最后用的是上面while...end while 方案。
DROP PROCEDURE IF exists pro_initCategoryForTradingEntity;
create procedure pro_initCategoryForTradingEntity(tradingEntityId int)
begin
declare f_parent,entityId,b int;
declare f_name varchar(100);
DECLARE cur_1 CURSOR FOR select FName,FParent,tradingEntityId from t_category_tag;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET b = 1;
OPEN cur_1;
REPEAT
FETCH cur_1 INTO f_name, f_parent, entityId;
insert into t_category(FName,FParent,FTradingEntity) values(f_name, f_parent, entityId);
UNTIL b = 1
END REPEAT;
close cur_1;
end;
call pro_initCategoryForTradingEntity(2);
DROP PROCEDURE IF exists pro_initCategoryForTradingEntity;
create procedure pro_initCategoryForTradingEntity(tradingEntityId int)
begin
declare f_parent,entityId int;
declare b int default 0; /*是否达到记录的末尾控制变量*/
declare f_name varchar(100);
DECLARE cur_1 CURSOR FOR select FName,FParent,tradingEntityId from t_category_tag;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET b = 1;
OPEN cur_1;
FETCH cur_1 INTO f_name, f_parent, entityId; /*获取第一条记录*/
while b<>1 do
insert into t_category(FName,FParent,FTradingEntity) values(f_name, f_parent, entityId);
FETCH cur_1 INTO f_name, f_parent, entityId; /*取下一条记录*/
end while;
close cur_1;
end;
call pro_initCategoryForTradingEntity(2);
另外循环也可以用repeat...end repeat 来循环控制,以下是我最初所做的示例代码,但结果是插入的实际数据总数多出一条,在此列出作为一个反面示例代码。当然最后用的是上面while...end while 方案。
DROP PROCEDURE IF exists pro_initCategoryForTradingEntity;
create procedure pro_initCategoryForTradingEntity(tradingEntityId int)
begin
declare f_parent,entityId,b int;
declare f_name varchar(100);
DECLARE cur_1 CURSOR FOR select FName,FParent,tradingEntityId from t_category_tag;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET b = 1;
OPEN cur_1;
REPEAT
FETCH cur_1 INTO f_name, f_parent, entityId;
insert into t_category(FName,FParent,FTradingEntity) values(f_name, f_parent, entityId);
UNTIL b = 1
END REPEAT;
close cur_1;
end;
call pro_initCategoryForTradingEntity(2);
相关文章推荐
- MySql存储过程使用游标循环插入数据示例
- MySql 存储过程使用游标循环插入数据示例
- Mysql存储过程循环内嵌套使用游标示例
- Mysql存储过程循环内嵌套使用游标示例代码
- mysql 存储过程示例,有参有返回值,使用到了判断,循环,游标,临时表,事务
- Mysql存储过程循环内嵌套使用游标示例代码
- mysql存储过程传入两个参数,循环插入数据
- MySQL存储过程中游标循环的跳出和继续操作示例
- oracle 采用游标循环插入数据的存储过程
- 使用mysql存储过程快速插入百万mysql测试数据
- 使用游标实现 mysql 存储过程中的循环
- MySQL 存储过程循环插入数据
- [MSSQL]存储过程示例(拷贝数据表--游标使用--更新数据-日期函数的使用)
- MYSQL存储过程循环CURSOR(游标)使用
- MySQL存储过程中游标循环的跳出和继续操作示例
- MySql 存储过程游标使用示例
- MYSQL存储过程:批量更新、插入数据、游标
- Mysql 插入100条数据存储过程。每次使用完删除。
- 在存储过程中使用游标循环表,组织数据
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce