一个批量更新的存储过程如何写?
2011-07-20 19:27
579 查看
写一个存储过程:
主要实现对发过货的 商品进行数量更新
下面是几个表 :
商品表 CODE:
我用游标了,感觉不对,没想到太好的思路
解决代码: CODE:
主要实现对发过货的 商品进行数量更新
下面是几个表 :
商品表 CODE:
create table t_ItemInfo( autoId int primary key, classId int not null, nclassId int not null, amount int ,--商品数量 title varchar2(100) not null, content varchar2(200) not null, price float not null, remark varchar2(200), filePath varchar2(200), fileName varchar2(200), addtime date );订单表: CODE:
create table t_OrderInfo( orderNo int, dAID int, oBalance int,--订单总价// ordertime date, payType varchar2(50),--付款类型:货到付款、银行转帐 sendType varchar2(50), --发货方式 hasapproved int, --订单可否多几种状态“等待处理、已发货、已结束 result varchar(200), approvedUserId int, approvedDate date, constraint PK_OrderInfo_orderNo primary key(orderNo), CONSTRAINT FK_OrderInfo_userID FOREIGN KEY (userID) REFERENCES t_UserInfo ( autoId) );订单详细表: CODE:
create table t_orderView( autoId int, orderNo int not null, itemID int not null, itemName varchar2(100) not null, itemCount int, price float not null, constraint PK_orderView_orderDId primary key(autoId), CONSTRAINT FK_orderView_orderNo FOREIGN KEY (orderNo) REFERENCES t_OrderInfo (orderNo) );主要是这几个表,因为订单详细表里面的商品数量很多,所以要更新很多条商品表里的数量,大家有什么高见~谢谢大家
我用游标了,感觉不对,没想到太好的思路
解决代码: CODE:
create or replace procedure Order_processed (p_oid in t_OrderInfo.orderNo%TYPE ) as CURSOR c1 IS SELECT itemId,itemCount FROM t_orderView WHERE rderNo = p_oid; v_itemId int; v_amount int; v_itemCount int; begin update t_OrderInfo set hasapproved=1, approvedDate=sysdate where rderNo=p_oid; --更新OrderTab中的字段 FOR r1 IN c1 LOOP v_itemId :=r1.itemId; v_itemCount := r1.itemCount; SELECT amount into v_amount from t_iteminfo where t_iteminfo.autoid = r1.itemid; v_amount := v_amount-v_itemCount; UPDATE t_iteminfo SET amount=v_amount WHERE t_iteminfo.autoid = r1.itemid; END LOOP; COMMIT; end Order_processed;
相关文章推荐
- MYSQL存储过程:批量更新数据
- SQL SERVER 如何批量修改表和存储过程的架构
- Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
- Sql Server2008如何在存储过程中实现根据判断插入更新数据
- 存储过程插入或是更新前的判断如何去写
- 如何实现对多台mysql实例的存储过程definer进行批量修改
- 自动生成对一个数据表的插入和更新的存储过程
- 获取android手机内外部存储空间的参数 && 如何决定一个apk的安装位置 && APK安装过程及原理详解
- 获取手机内外部存储空间的参数 && 如何决定一个apk的安装位置 && APK安装过程及原理详解
- SQL : 如何完全复制一个服务器上的数据库A到另一个服务器上的数据库B(包括库A的所有表、试图、存储过程等等)
- 如何在ORACLE启动时执行一个自定义的存储过程
- oracle如何在一个存储过程中调用另一个返回游标的存储过程
- 循环批量更新的的存储过程(属于转载)
- oracle中PLSQL存储过程中如何使用逗号分隔的集合(逗号分隔字符串转换为一个集合)
- 如何编写一个带模糊查询的存储过程
- Sql Server2008如何在存储过程中实现根据判断插入更新数据
- oracle10g,有一个表和一个存储过程被锁了,但在v$locked_object中找不到记录,请问如何解决?
- MYSQL存储过程:批量更新数据2(产品品牌)
- 存储过程将一个表中的一个字段值更新到另一个表相同字段,
- 如何删除一个表中重复的记录? 、、游标,存储过程的使用