Oracle 儲存過程小結 遊標 ,隨機生成UUID(32位)
阿新 • • 發佈:2018-11-22
業務需求:
今天領導要求後天批量插入修改資料,將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;
就是如此簡單的儲存過程就能搞定批量處理,若是遇到一條條查詢插入,就可以考慮用儲存過程遊標。
收工!