Oracle中自动生成的guid与.Net中的guid的交互

最近在做一个T1的.NET项目,数据库oracle的时候,遇到一个问题。.NET里面的某个数据库表类的某个字段是guid类型。但是用oracle生成的guid。跟.NET的guid

无法识别。导致报错。数据显示不了。经过查资料,网上好像很少是专门去说明这个问题的博客,后来经过多次查看资料。故总结如下经验。

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

但是oracle生成的guid跟.NET的guid看起来不一样。.net的guid是36字符(中间有4个-),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;

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;
View Code

     但是通过.NET程序判断,结果还是不一样,这个时候,通过肉眼是看不到区别(因为我看了1个多小时都没看出端倪。哈哈)。后来去查看资料,就明白了原来是oracle生成的那个guid存储方式跟.NET的存储方式不一样。分别是hextoraw与rawtohex。关于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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自动生成GUID软件是一种能够帮助用户生成全局唯一标识符(GUID)的软件工具。GUID是一种由16个字节组成的字符串,以保证在全球范围内的唯一性。使用GUID可以确保在分布式系统的各个组件或实体之间进行唯一标识和定位。 自动生成GUID软件通常具备以下功能: 1. 高效生成:软件能够迅速生成GUID,让用户在需要时能够方便地获得唯一标识符。 2. 多种生成方式:软件可以提供多种生成GUID的方式,如随机生成、基于时间戳生成等。这样用户可以根据具体需求选择适合的生成方式。 3. 批量生成:软件支持批量生成GUID,用户可以一次性生成多个GUID,提高工作效率。 4. 可定制性:软件允许用户进行一定程度的定制,例如可以设置GUID的长度、格式等,以符合不同系统或应用的要求。 5. 图形界面:软件提供直观的图形界面,使得用户能够轻松操作和管理生成的GUID。 6. 导出与导入:软件可以支持生成的GUID的导出与导入,方便用户进行备份和恢复。 7. 集成接口:软件可以提供与开发工具和应用程序集成的接口,方便开发人员在代码使用生成的GUID。 通过使用自动生成GUID软件,用户可以摆脱手动生成GUID的复杂和不便,简化工作流程,提高工作效率。这种软件在分布式系统、数据库管理、身份识别验证等领域具有重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值