sólo tiene que utilizar siempre la norma en GUID
. RED...
Cuando desee insertar algún GUID
en Oracle que acaba de llamar Guid.ToString ("N")
y alimentar a esa cadena de Oracle (en este ejemplo el param name es MyNETVAL
):
INSERT INTO MyTable (MyRAWCol)
SELECT HEXTORAW (SUBSTR (MyNETVal, 6, 2) || SUBSTR (MyNETVal, 4, 2) || SUBSTR (MyNETVal, 2, 2) || SUBSTR (MyNETVal, 0, 2) || SUBSTR (MyNETVal, 10, 2) || SUBSTR (MyNETVal, 8, 2) || SUBSTR (MyNETVal, 14, 2) || SUBSTR (MyNETVal, 12, 2) || SUBSTR (MyNETVal, 16, 16)) FROM DUAL;
Cuando se leyó un RAW
de Oracle que utilice :
SELECT
SUBSTR (HexV, 6, 2) || SUBSTR (HexV, 4, 2) || SUBSTR (HexV, 2, 2) || SUBSTR (HexV, 0, 2) || SUBSTR (HexV, 10, 2) || SUBSTR (HexV, 8, 2) || SUBSTR (HexV, 14, 2) || SUBSTR (HexV, 12, 2) || SUBSTR (HexV, 16, 16) AS MyNETVal
FROM (SELECT RAWTOHEX (MyRAWCol) HexV FROM MyTable);
a continuación, se puede alimentar a la volvieron MyNETVal
en new Guid (MyNETVal)
.
De esta forma su código siempre trata con el formato .NET y la conmutación de bytes ocurre en el Oracle-DB ... usted no contamina su código con el código de conversión y puede mantener el mismo código al cambiar a otro DB - acaba de cambiar el SQL y que está en marcha y funcionando ... SQL podría conseguir más simple con otra DB debido a que algunos de ellos siguen el formato GUID de Windows ...
duplicado posible de [Convertir matriz de bytes de Oracle RAW a System.Guid?] (Http://stackoverflow.com/questions/2667740/convert-byte-array-from-oracle-raw-to -system-guid) –