.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;
