Oracle-关键字-BINARY_INTEGER(数组)

  TYPE cursor_type IS REF CURSOR;

   -- 数组类型
   TYPE str_array IS TABLE OF VARCHAR (512)
                        INDEX BY BINARY_INTEGER;

 
   --创建月结订单
   PROCEDURE p_bill_monthly (va_bills IN str_array)
   AS
      vn_index       NUMBER := 0;                                      --索引最小值
      vn_index_max   NUMBER := 0;                                      --索引最大值
      vv_bill_id     VARCHAR (32);                                    --当前账单编号
      vr_new_bill    fi_acc_bill%ROWTYPE;                              --第一行数据
      vr_del_bill    fi_acc_bill%ROWTYPE;                              --当前行数据
      vn_amount      NUMBER := 0.0;                                      --总金额
   BEGIN
      --第一个索引
      vn_index := va_bills.FIRST;
      --最后一个索引
      vn_index_max := va_bills.LAST;

      IF va_bills.COUNT = 0
      THEN
         raise_application_error (-20001, '账单编号数组不能为空');
      END IF;

      WHILE vn_index <= vn_index_max
      LOOP
         vv_bill_id := va_bills (vn_index);

         IF vn_index_max = 0
         THEN
            --获取第一行
            SELECT *
              INTO vr_new_bill
              FROM fi_acc_bill
             WHERE bill_id = vv_bill_id;

            IF vr_new_bill.amount IS NULL
            THEN
               raise_application_error (-20001, '数据为空');
            END IF;
         ELSE
            --获取当前要删除行
            SELECT *
              INTO vr_del_bill
              FROM fi_acc_bill
             WHERE bill_id = vv_bill_id;

            --是否要判断方向?

            vn_amount := vn_amount + vr_del_bill.amount;
         --删除当前行
         -- delete from fi_acc_bill where  bill_id=VV_Bill_ID;
         END IF;

         vn_index := vn_index + 1;
      END LOOP;
   --  vn_amount := vn_amount + vr_New_Bill.amount;

   --update fi_acc_bill set amount=vn_amount where  bill_id=vr_New_Bill.bill_id;
   END;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值