Oracle 存储过程小结 游标 ,随机生成UUID(32位)

业务需求:

           今天领导要求后天批量插入修改数据,将A表中的数据一条条的插入到B表中,中间还夹杂这业务逻辑。

 技术需求:

           若考虑到一条一条 插入,就想到了Oracle 存储过程游标这一功能

技术实现: 

第一步: 创建函数,自动生成UUID 32位

CREATE OR REPLACE  -- 创建一个函数function,返回UUID
FUNCTION get_uuid
RETURN VARCHAR
IS
guid VARCHAR (50);
BEGIN
guid := upper(RAWTOHEX(sys_guid()));
RETURN
substr(guid,1,8)||substr(guid,9,4)||substr(guid,13,4)||substr(guid,17,4)||substr(guid,21,12);
END get_uuid;
SELECT GET_UUID FROM DUAL; --测试SQL,非常实用
   create or replace procedure PLCL is    --创建存储过程,批量处理PLCL

          cursor swjgdm_1 is     -- 创建游标,这个就是一个结果集,就是类似于for循环中的length
            SELECT t.swjg_dm FROM dm_gy_swjg t;

        begin
          for A in swjgdm_1 loop   --开始游标遍历,循环插入,
                                   --此时可以用结果集中的数据 如A.swjgdm
          
            begin
              insert into QX_SWJG_GW
                (GWXH,
                 GW_DM,
                 SWJG_DM,
                 LRRQ,
                 LRR_DM,
                 XGRQ,
                 XGR_DM,
                 YXBZ,
                 XSXH,
                 SJLY,
                 SJGL_TBSJ)
              values
                (GET_UUID,
                 '241000000001212', -- 岗位代码 需要填入新生成的岗位代码 
                 A.swjg_dm,
                 to_date('05-05-2015 05:05:05', 'dd-mm-yyyy hh24:mi:ss'),
                 '24104900020',
                 null,
                 '',
                 'Y',
                 '1',
                 '02',
                 '17-2月 -17 06.18.35.064002 下午');
            
            end;
          end loop;
        end PLCL;

   就是如此简单的存储过程就能搞定批量处理,若是遇到一条条查询插入,就可以考虑用存储过程游标。

   收工!

猜你喜欢

转载自blog.csdn.net/qq_30125555/article/details/83539308