oracle生成.net的guid方法;


.NET里面的某個數據庫表類的某個字段是guid類型

在Oracle SQL 提供了一個生成guid的函數sys_guid:
SQL> select sys_guid() from dual ;
SYS_GUID()
--------------------------------
A8F662B86E7413FEE040970A437C6BD7

但是oracle生成的guid跟.NET的guid看起來不一樣。.net的guid是36字符,oracle的只有32個數字。再將oracle的guid制造成跟.net的一樣。

CREATE OR REPLACE
FUNCTION get_uuid
RETURN VARCHAR
IS
guid VARCHAR (50);
BEGIN
guid :=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;

但是通過.NET程序判斷,結果還是不一樣,這個時候,通過肉眼是看不到區別(因為我看了1個多小時都沒看出端倪。哈哈)。后來去查看資料,就明白了原來是oracle生成的那個guid

存儲方式跟.NET的存儲方式不一樣。分別是hextoraw與rawtohex(想知道清楚一點,可以查看我的其中一篇博客"Oracle hextoraw和rawtohex").

后來修改成相同的存儲方式,就ok

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;

 

轉:ko絕緣體   oracle生成.net的guid方法;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM