资金表实现过程方案一:资金表与冻结表合并(四)

4. delete 存储过程
 
CREATE OR REPLACE PROCEDURE PAYT.SP_BALANCE_FOR_DELETING (
   P_MONEY         IN FLOAT,                                        --结算金额
   P_CATEGORY_ID   IN NUMBER,                           --类别ID:1.投入,0.支出
   P_MEMBER_ID     IN NUMBER,                                         --会员ID
   P_MERCHANT_ID   IN NUMBER,                                         --商户ID
   P_VALID         IN NUMBER                        --是否有效:1.不解凍 0.解凍
)
IS
   V_MONEY         FLOAT (126);                                     --结算金额
   V_CATEGORY_ID   NUMBER (19);                         --类别ID:1.投入,0.支出
   V_MEMBER_ID     NUMBER (19);                                       --会员ID
   V_MERCHANT_ID   NUMBER (19);                                       --商户ID
   V_VALID         NUMBER (1);                      --是否有效:1.不解凍 0.解凍
BEGIN
   V_MONEY := P_MONEY;                                              --结算金额
   V_CATEGORY_ID := P_CATEGORY_ID;                      --类别ID:1.投入,0.支出
   V_MEMBER_ID := P_MEMBER_ID;                                        --会员ID
   V_MERCHANT_ID := P_MERCHANT_ID;                                    --商户ID
   V_VALID := P_VALID;                              --是否有效:1.不解凍 0.解凍

   ----------------------------------------------------------------------------
   --       CATEGORY                         ID             DNAME            --
   --       TradeSettlementCategory         506            转帐支出          --
   --       TradeSettlementCategory         505            退款支出          --
   --       TradeSettlementCategory         507            提现支出          --
   --       TradeSettlementCategory         508            手续费支出        --
   --       TradeSettlementCategory         509            返点收入          --
   --       TradeSettlementCategory         504            支付收入          --
   ----------------------------------------------------------------------------
 
   CASE
      /*刪除商戶投入記錄*/
      WHEN V_MEMBER_ID IS NULL AND V_CATEGORY_ID IN (504, 509)      --商户投入
      THEN
         IF V_VALID = 1                                         --投入尚未成交
         THEN
            UPDATE   tab_merchantfund
               SET   balance = balance - v_money,
                     totalearning = totalearning - v_money,
                     usebalance = usebalance - v_money
             WHERE   merchant_id = v_merchant_id;
         ELSIF V_VALID = 0                                      --投入已经成交
         THEN
            raise_application_error (-20001, 'Have deal, refused to delete!');
         END IF;
      /*刪除商戶支出記錄*/
      WHEN V_MEMBER_ID IS NULL AND V_CATEGORY_ID IN (505, 506, 507, 508) --商户支出
      THEN
         IF V_VALID = 1                                         --支出尚未成交
         THEN
            UPDATE   tab_merchantfund
               SET   usebalance = usebalance + v_money,
                     frozenprice = frozenprice - v_money
             WHERE   merchant_id = v_merchant_id;
         ELSIF V_VALID = 0                                      --支出已经成交
         THEN
            raise_application_error (-20001, 'Have deal, refused to delete!');
         END IF;
      /*刪除会员投入記錄*/
      WHEN V_MERCHANT_ID IS NULL AND V_CATEGORY_ID IN (504, 509)    --会员投入
      THEN
         IF V_VALID = 1                                         --投入尚未成交
         THEN
            UPDATE   tab_memberfund
               SET   balance = balance - v_money,
                     totalearning = totalearning - v_money,
                     usebalance = usebalance - v_money
             WHERE   member_id = v_member_id;
         ELSIF V_VALID = 0                                      --投入已经成交
         THEN
            raise_application_error (-20001, 'Have deal, refused to delete!');
         END IF;
      /*刪除会员支出記錄*/
      WHEN V_MERCHANT_ID IS NULL AND V_CATEGORY_ID IN (505, 506, 507, 508) --会员支出
      THEN
         IF V_VALID = 1                                         --支出尚未成交
         THEN
            UPDATE   tab_memberfund
               SET   usebalance = usebalance + v_money,
                     frozenprice = frozenprice - v_money
             WHERE   member_id = v_member_id;
         ELSIF V_VALID = 0                                      --支出已经成交
         THEN
            raise_application_error (-20001, 'Have deal, refused to delete!');
         END IF;
   END CASE;
END;
/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25198367/viewspace-745866/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25198367/viewspace-745866/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值