我在手动调试.NET应用程序时遇到困难,Guid值在.NET和Oracle之间存在差异。
17D89D326C2142D69B989F5201288DBF
- `329DD817216CD6429B989F5201288DBF`
我如何能够手动调试,即从C#的GUID中粘贴该值到oracle查询中并获得正确的结果(反之亦然)?
发布于 2011-09-02 22:56:48
只要用你的标准GUID在.NET.
当您想在Oracle中插入一些GUID时,只需调用Guid.ToString ( "N")并将该字符串提供给Oracle (在本例中,param名称为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;当从Oracle读取RAW时,可以使用:
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);然后,可以将返回的MyNETVal输入到new Guid (MyNETVal)中。
这样,您的代码总是处理.NET格式,字节切换发生在Oracle中.您不使用转换代码来优化您的代码,并且可以在切换到其他DB时保持代码相同--只需更改SQL,您就可以启动并运行.SQL可以与其他DB一起变得更简单,因为其中一些数据库遵循Windows的GUID格式.
https://stackoverflow.com/questions/7289734
复制相似问题