存储过程

存储过程记录日志模板

开始部分

   tempId := SEQ_CRM_OPT_LOG.Nextval;
   INSERT INTO CRM_TASK_OPERATE_LOG
      (ID, TASK_NAME, BEGIN_TIME, STATUS, TASK_TYPE)
   VALUES
       (tempId, 'SEQ_CRM_CUST_USER_INTERVAL', SYSDATE, 1, 1 );
   COMMIT; 
```      结束部分

       detail_info := '[{"order":"1","name":"CRM_CUST_INTERVAL表插入数据","count":"' ||                                  
       sql%rowcount || '"}]';
       UPDATE CRM_TASK_OPERATE_LOG T
       SET T.END_TIME = SYSDATE, T.STATUS = 2, T.DETAIL = detail_info
       where id = tempId;     

      COMMIT;
       exception
       when others then
      dbms_output.put_line('存储过程PRO_CRM_CUST_SHOP,执行异常!');
      rollback;
      sql_errm := sqlerrm;
      update CRM_TASK_OPERATE_LOG t
       set t.end_time  = sysdate,
           t.status    = 3,
           t.detail    = detail,
           t.exception = sql_errm
      where id = tempId;
     commit;

**if elsif else 代码**
   IF a>10 then 
   逻辑 ;
   ELSIF (a>5  and a<=10then
   逻辑
   ELSE
   逻辑 ;
   end IF;
   **多层逻辑条件 并用and 或用or 或者是嵌套多层 if **
   **程序中的elseif 和这个不一样,新手容易写错**




<div class="se-preview-section-delimiter"></div>


-------------------

 - 计算相邻的两条记录您的时间差(场景:计算用户订单的时间间隔)
 原理分析 :遍历当前记录游标,把当前的时间放到变量中,然后进行下一个记录时,进行相减,重置当前时  间,当变更用户后重置起始购买次数。脚本如下:






<div class="se-preview-section-delimiter"></div>

mobile :=0;
shop_id :=0;
buy_count :=1;
gap :=0;
open user_order_list for ‘select dso.shop_id,dod.mobile,dso.create_time from dwh_order_delivery_ins dod
inner join dwh_sales_order_ins dso on dso.src_sys = dod.src_sys and dso.src_id = dod.src_id
inner join crm_shop cs on cs.shop_id = dso.shop_id
where dso.cancel_time is null
and dod.mobile is not null
and dso.order_type !=422
group by dso.shop_id,dod.mobile,dso.create_time
ORDER BY ’ || shop_mobile_create_time;

LOOP
FETCH user_order_list INTO v_shop_id,v_mobile,v_create_time;
EXIT WHEN user_order_list%NOTFOUND;
IF(mobile=v_mobile and shop_id=v_shop_id) then
select trunc(v_create_time)-trunc(pre_create_time) into gap from dual;
– 插入逻辑
insert into crm_cust_interval
(id, shop_id, mobile, interval_type, interval_day, create_time)
values
(seq_crm_cust_interval.nextval, v_shop_id, v_mobile, buy_count, gap+1, SYSDATE);
buy_count :=buy_count +1;
ELSE
buy_count :=1;

end if;
mobile :=v_mobile;
shop_id :=v_shop_id;
pre_create_time :=v_create_time;

end Loop;
“`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值