oracle如何使用if,触发器中如何使用IF条件

偶写的一个trigger就是不能按我的意思更新,请大侠们帮忙看看是哪的问题?谢谢!

更新结果如下

pn      qty        receive_quantity     status

a        500        500                      close

a        500        500                      close

a        500        500                      close

我要的结果是

pn      qty        receive_quantity     status

a        500        500                        close

a        500        500                        close

a        500        200                        open

当输入rcv_t.quantity 1200时把它拆分到app表更新receive_quantity。

CREATE OR REPLACE TRIGGER rcv_insertion

BEFORE INSERT

ON DEVS.RCV_T    FOR EACH ROW

DECLARE

p_app_part_number        VARCHAR2 (200);

p_app_qty    NUMBER;

p_app_receive_quantity   NUMBER;

p_count_pn                      NUMBER;

p_rcv_part_number               VARCHAR2 (200) := :NEW.part_number;

p_rcv_quantity                  VARCHAR2 (200) := :NEW.quantity;

rcv_q         number;

v_value            number;

CURSOR cur_app

IS

SELECT     part_number, qty, receive_quantity

FROM devs.app

WHERE part_number = p_rcv_part_number AND status = 'open'

order by creation_date

FOR UPDATE;

BEGIN

SELECT COUNT (*)

INTO p_count_pn

FROM devs.app

WHERE part_number = p_rcv_part_number AND status = 'open';

if p_count_pn = 0 then

insert into devs.rcv_t(transaction_id, part_number, item_description, quantity, creation_date)

values(:new.transaction_id, :new.part_number, :new.item_description, :new.quantity, :new.creation_date);

insert into devs.rcv_excess(transaction_id, part_number, item_description, excess_quantity, creation_date)

values(:new.transaction_id, :new.part_number, :new.item_description, :new.quantity, :new.creation_date);

else if p_count_pn > 0 then

OPEN cur_kanban_app;

loop

FETCH cur_app

INTO p_app_part_number, p_app_qty,

p_app_receive_quantity;

EXIT WHEN cur_app%NOTFOUND;

v_value := p_rcv_quantity;

loop

v_value := v_value - p_app_qty;

exit when v_value < p_app_qty;

if v_value > p_app_qty then

rcv_q := p_app_qty;

else if v_value < p_app_qty then

rcv_q := v_value;

end if;

end if;

end loop;

update devs.app

set receive_quantity = rcv_q, status = close

where current of cur_kanban_app;

end loop;

close cur_kanban_app;

end if;

end if;

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值