根據考覈的八大類數據,經常從部門那裏拿到的dmp文件,裏面並沒有xyptguid的隨機數字段。會出現xyptguid爲空的情況。但是從我們平臺裏面導入的Excel表格會產生xyptguid的隨機數。
這時候我們自己就需要自己建立隨機數並插入到表中。
信用平臺裏面的xyptguid隨機數是符合rfc 4122的標準(http://tools.ietf.org/html/rfc4122)
所以我們建立的隨機數也需要遵循這種。
首先創建函數
CREATE OR REPLACE
FUNCTION get_uuid
RETURN VARCHAR
IS
guid VARCHAR (50);
BEGIN
guid := lower(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 ;
該隨機數和目前數據交換系統產生的隨機數格式是一致的。
後面的問題就是如何將產生的隨機數,循環的插入到表中?
這時候我們就需要用到遊標:(測試語句如下)
declare
*--**定義遊標並且賦值(is 不能和cursor分開使用)*
cursor cur_1 is select get_uuid from dual;
*--**定義rowtype*
cur_stu T_GYSYJFXX%rowtype;
begin
*--**開啓遊標*
for cur_stu in cur_1 loop
*--**執行操作sql*
update T_GYSYJFXX set xyptguid= get_uuid where xyptguid is null;
*--**結束循環*
end loop;
*/***結束執行\*/*
end;
測試更新的表T_GYSYJFXX數據量爲40萬條,循環插入隨機數後不重複且符合交換系統要求。