Chỉ cần sử dụng luôn chuẩn GUID
trong. MẠNG LƯỚI...
Khi bạn muốn chèn một số GUID
vào Oracle bạn chỉ cần gọi Guid.ToString ("N")
và thức ăn chuỗi đó để Oracle (trong ví dụ này tên param là 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;
Khi bạn đọc một RAW
từ Oracle bạn sử dụng :
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);
Sau đó, bạn có thể ăn trở MyNETVal
vào new Guid (MyNETVal)
. Bằng cách này mã của bạn luôn luôn giao dịch với định dạng .NET và chuyển đổi byte xảy ra trong Oracle-DB ... bạn không polute mã của bạn với mã chuyển đổi và có thể giữ mã code giống nhau khi chuyển sang khác DBs - chỉ cần thay đổi SQL và bạn đang lên và chạy ... SQL có thể trở nên đơn giản hơn với các DB khác vì một số người trong số họ tuân theo định dạng GUID của Windows ...
trùng lặp có thể xảy ra của [Chuyển đổi mảng byte từ Oracle RAW để System.Guid?] (Http://stackoverflow.com/questions/2667740/convert-byte-array-from-oracle-raw-to -system-guid) –