oracle 存储过程中使用游标

本文介绍了一种使用存储过程进行数据库基础数据初始化的方法,包括建立临时表、上传文件、使用游标进行数据插入与更新的过程,并指出正确的操作顺序以避免数据重复更新的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目上准备线,使用存储过程进行基础数据的初始化(有则更新,无则插入)。
1、建立临时表 temp;
2、前台上传文件,写入临时表 temp;
3、通过存储过程,处理temp数据,初始化。

使用游标循环处理临时表数据,进行数据的插入与更新。
begin
for mycus in cus loop
begin
insert table ...
end;
end loop;
for mycus2 in cus2 loop
begin
update table ...
end;
end loop;
end;

使用上面的方式,即先插入新数据,再更新。会影响游标cus2的结果集,导致数据重复更新。因为游标是在打开的时候,才根据定义,查询结果集。所以insert(update)都会影响后面的结果集。
在不影响初始化数据时,应现在更新操作,在插入新数据。
begin
for mycus2 in cus2 loop
begin
update table ...
end;
end loop;
for mycus in cus loop
begin
insert table ...
end;
end loop;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值