Utilisez toujours votre standard GUID
dans .NET...
Lorsque vous voulez insérer des GUID
en Oracle, il suffit d'appeler Guid.ToString ( "N")
et envoyez cette chaîne à Oracle (dans cet exemple le nom du paramètre est 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;
Lorsque vous lisez un RAW
d'Oracle que vous utilisez :
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);
Ensuite, vous pouvez nourrir le retour MyNETVal
sur new Guid (MyNETVal)
.
De cette façon, votre code traite toujours le format .NET et la commutation d'octets se produit dans la base de données Oracle... vous ne polluez pas votre code avec du code de conversion et vous pouvez garder le même code lorsque vous passez à d'autres bases de données - il suffit de changer le SQL et vous êtes opérationnel... le SQL pourrait être plus simple avec d'autres bases de données parce que certaines d'entre elles suivent le format GUID de Windows...
0 votes
Duplicata possible de Convertir un tableau d'octets de Oracle RAW en System.Guid ?
0 votes
Pourquoi je n'ai pas utilisé la ficelle ? fml