merge into lq_matchwoman t1
using (select y1.woman,
              y2.operatedate,
              y2.org,
              l.orgname,
              l.lqorg,
              y2.name,
              (select
               
                lpad((to_number(nvl(max(substr(t.lqwbarcode, 15, 6)), 0)) + 1),
                     6,
                     '0') lqwbarcode
                 from lq_matchwoman t
                where substr(t.lqwbarcode, 1, 9) ||
                      substr(t.lqwbarcode, 11, 2) = l.lqorg) as maxb
         from y_woman y1, y_woman y2, lq_matchorg l
        where y1.woman = y2.woman
          and y2.org = l.hyorg
          and y2.operatedate >
              to_date('2011-02-10 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
          and y2.OPERATEDATE <
              to_date('2011-02-14 23:59:59', 'yyyy-mm-dd hh24:mi:ss')) t2
on (t1.woman = t2.woman)
when not matched then
  insert
  values
    (t2.woman,
     (substr(t2.LQORG, 1, 9) || '1' || substr(t2.LQORG, 10, 2) ||
     substr(to_char(t2.operatedate, 'yyyy-mm-dd'), 3, 2))
     
     || t2.maxb,
     t2.name)
我这个主要实现的就是 往 lq_matchwoman中插入特定编码的表,其中这个特定编码,就是靠 lq_matchorg中的机构码加上lq_matchwoman中末六位的最大顺序码。
也就是 lpad((to_number(nvl(max(substr(t.lqwbarcode, 15, 6)), 0)) + 1),
                     6,
                     '0')总的插入到lq_matchwoman中的就是  机构前缀码 + 顺序码:机构前缀码:(substr(t2.LQORG, 1, 9) || '1' || substr(t2.LQORG, 10, 2) ||
     substr(to_char(t2.operatedate, 'yyyy-mm-dd'), 3, 2))
     
顺序码: t2.maxb,
现在的问题就是这个 顺序码,没有往上递增
这不是应该有事务效果吗,我在插入当前,之前的一条不是应该已经插入了吗,当前的MAX取到效果的不是应该是前面记录已效果吗。。不解有没有高人,解下惑,有更好的办法,让我实现这个动态递增插入。