入库主表(入库单编号、入库日期、保管员、采购员、供应商);
入库详细表(入库单编号、商品编号、入库数量);
帐表(年,月,商品编号、期初数量,入库数量、出库数量、最终数量);入库主表 与入库详细表 是 1:N 的关系。当入库主表和入库详细表中内容被修改后,如何改写帐表?
帮忙写个存储过程。
入库详细表(入库单编号、商品编号、入库数量);
帐表(年,月,商品编号、期初数量,入库数量、出库数量、最终数量);入库主表 与入库详细表 是 1:N 的关系。当入库主表和入库详细表中内容被修改后,如何改写帐表?
帮忙写个存储过程。
解决方案 »
- 连接oracle数据库,返回-1034,搞了两天没搞定!!
- Oracle应用TNS-12560
- 水晶报表调用oracle存储过程报错
- 非常奇怪的问题。plsql匿名块调试在8i上看不到add debug information。9i,10g上能看到。酬劳(RMB 10元)
- 帮我看下这段代码有没有问题?
- 为什么从大对象里读出来的都是????
- 求助,PLSQL登陆页面点击确定按钮PLSQL就自动关闭了
- 急需oracle教材
- 菜鸟问题,在线急等、!!export和import问题,
- 封装ORACLE OCI和DB2 CLI 的数据库接口,可能你有用
- PLSQL编码中处理特殊字符的问题(望个位大大指教)
- 帮我读一下这段代码!大分~
using
(select .... from 入库主表 a,入库详细表 b where a.入库账单编号=b.入库账单编号
group by ...)t2
on (t1.年月=t2.年月 and t1.商品编号=t2.商品编号)
when matched then
update ...
when not matched then
insert ...
年月来自主表的入库日期
期初数量根据帐表计算得出(规则不知)
建议每向明细表插入一条记录时,调用此存储过程一次。
参考存储过程如下:
create or replace procedure sp_update_inv_account
(
p_Year IN NUMBER,--年
p_Month IN NUMBER,--月
p_GoodsNo IN VARCHAR2,--商品编号
P_Qty IN NUMBER,--入库数量
p_MsgID OUT NUMBER,--返回ID,0表示成功,-1表示失败
p_ErrMsg OUT VARCHAR2--错误详细信息
)
IS
V_INV_REC 帐表%ROWTYPE;
BEGIN
p_MsgID:=0;
p_ErrMsg:='';
BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM 帐表 WHERE 年=:1 AND 月=:2 AND 商品编号=:3 FOR UPDATE' INTO V_INV_REC USING p_Year,p_Month,p_GoodsNo ;
EXCEPTION WHEN OTHERS THEN
EXECUTE IMMEDIATE 'INSERT INTO 帐表(年,月,商品编号、期初数量,入库数量、出库数量、最终数量)VALUES(:1,:2,:3,:4,:5,:6,:7)' USING p_Year,p_Month,p_GoodsNo,0,P_Qty,0,P_Qty;
END ;
RETURN;
EXCEPTION HEN OTHERS THEN
p_ErrMsg:='更新帐表失败';
p_MsgID:=-1;
END;
begin
give my procedure and i will give scoreend。
但有两点可能我没说清楚:
1,如果入库单被修改后,存储过程对帐进行修改,不是插入的时候修改。
2 ,最好用ORACLE ,小第不清楚的 是:入库单被修改后,该怎么对帐进行修改。或着把思路讲明白也可以
比如上次更新帐表时间是to_date('20090901120000','yyyymmddhh24miss')
那么这次更新只需
加入 入库日期>to_date('20090901120000','yyyymmddhh24miss') 这个条件来筛选数据,两表连接后的添加到帐表中即可
再将结果插入帐表
你给的例子比较模糊,代码很难写。也不知道出库数量从哪儿来,还有年月是怎么回事你可以参考下
select ...
from 入库主表 a,入库详细表 b,帐表 c
where a.入库单编号=b.入库单编号
and b.商品编号=c.商品编号
and a.入库日期>:lastupdatetime
and c.入库日期=:lastupdatetime
group by trunc(a.入库日期,'mm'),b.商品编号
根据需要来修改
090205(入库单号),1(商品ID), 100 (入库数量)
090205(入库单号),2(商品ID), 50 (入库数量)]
插入入库单后把年,月,商品ID 、入库数量都写到 2009 年9 月帐上去了。
现在我对这入库单进行修改,这个帐该怎么处理了,,也就是这个存储过程该怎么写了?
根据入库单 获取商品ID,入库数量
这样一来就知道, 该商品ID的年和月,数量
根据年,月,商品ID 更新帐表数量!