zoukankan      html  css  js  c++  java
  • oracle生成.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字符,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;
    View Code

         但是通过.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;
    View Code



  • 相关阅读:
    软件工程结对作业02
    最大子数组和
    四则运算2单元测试
    软件工程个人作业03
    梦断代码阅读笔记01
    最大值的单元测试
    构建之法阅读笔记01
    进度条记录02
    软件工程个人作业02
    【BZOJ2595_洛谷4294】[WC2008]游览计划(斯坦纳树_状压DP)
  • 原文地址:https://www.cnblogs.com/fgr-lmy/p/4214852.html
Copyright © 2011-2022 走看看