Oracle用sys_Guid()创建为视图ID,.net跨库保存的值却为system_Byte[]问题解决--将sys_Guid()转换为string

来源:互联网 发布:阿里云代理加盟 编辑:程序博客网 时间:2024/06/03 14:53

创建视图

CREATE or replace VIEW VM_DIPVMTest12017
AS 
SELECT  sys_guid() as ID ,NAME,AGE,(SELECT TARCOL FROM depvmvaluelist WHERE SRCCOL01=GENDER AND vmid='226bcca1-a309-40bb-a13d-fecd88ec6019') AS GENDER 
,NVL(HOBBY,'123') as HOBBY ,CREATOR,CREATEDTIME,LASTMODIFIER,LASTMODIFIEDTIME,sys_guid() as GUID
FROM DIPVMTest12017

然后.net跨库保存数据为System.Byte[]



解决方法:

1. 创建一个function


CREATE OR REPLACE FUNCTION DIP_GET_GUID 
    RETURN CHAR 
IS 
    v_guid              CHAR (36); 
    v_guid_part_one     CHAR (8); 
    v_guid_part_two     CHAR (4); 
    v_guid_part_three   CHAR (4); 
    v_guid_part_four    CHAR (4); 
    v_guid_part_five    CHAR (12); 
BEGIN 
    SELECT SYS_GUID () 
  INTO v_guid 
  FROM DUAL;


    v_guid_part_one := SUBSTR (v_guid, 0, 8); 
    v_guid_part_two := SUBSTR (v_guid, 8, 4); 
    v_guid_part_three := SUBSTR (v_guid, 12, 4); 
    v_guid_part_four := SUBSTR (v_guid, 16, 4); 
    v_guid_part_five := SUBSTR (v_guid, 20, 12); 
    v_guid := 
    CONCAT 
    (CONCAT 
     (CONCAT 
      (CONCAT (CONCAT (CONCAT (CONCAT (CONCAT (v_guid_part_one, 
                 '-'), 
               v_guid_part_two 
              ), 
             '-' 
            ), 
           v_guid_part_three 
          ), 
         '-' 
        ), 
       v_guid_part_four 
      ), 
      '-' 
     ), 
     v_guid_part_five 
    ); 
    RETURN (v_guid); 
END DIP_GET_GUID;


2. 修改创建的视图,用DIP_GET_GUID()函数代替sys_guid()函数

CREATE or replace VIEW VM_DIPVMTest12017
AS 
SELECT  DIP_GET_GUID() as ID ,NAME,AGE,(SELECT TARCOL FROM depvmvaluelist WHERE SRCCOL01=GENDER AND vmid='226bcca1-a309-40bb-a13d-fecd88ec6019') AS GENDER 
,NVL(HOBBY,'123') as HOBBY ,CREATOR,CREATEDTIME,LASTMODIFIER,LASTMODIFIEDTIME,sys_guid() as GUID
FROM DIPVMTest12017


用.net跨库同步





原创粉丝点击