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



  • 相关阅读:
    vue登录
    登录vue
    FoolWeb Logo
    无限极下拉列表管理
    qtip2 扩展.net mvc 默认验证样式
    编辑器上传提交不能过.net 安全验证的解决方案
    FoolWeb 各层代码实例
    iis7 上传大文件那点事
    js制作 电子杂志(附源代码)
    FoolWeb (二) 数据库设计
  • 原文地址:https://www.cnblogs.com/fgr-lmy/p/4214852.html
Copyright © 2011-2022 走看看