我不知道Oracle的SYS_GUID()函数是否返回
a RFC 4122 compliant UUID.例如:
sql> select sys_guid() from dual; SYS_GUID() -------------------------------- A6C1BD5167C366C6E04400144FD25BA0
我知道,SYS_GUID()返回一个16字节的RAW数据类型。 Oracle使用RAWTOHEX()和可能的TO_CHAR()打印出上述ID。将其解释为符合UUID的字符串格式是正确的,如:
A6C1BD51-67C3-66C6-E044-00144FD25BA0
我认为它不符合RFC 4122标准,因为定义说,有效的UUID必须在UUID本身中命名UUID版本。
RFC 4122兼容UUID(版本3)的语法:
xxxxxxxx-xxxx-3xxx-xxxx-xxxxxxxxxxxx
SYS_GUID是Oracle相当于UUID的。它是全球独一无二的。但是,它不符合RFC 4122;在文档中(在Java XML文档之外)没有引用UUID,我推测缺乏合规性。
我怀疑Oracle本来没有实现RFC 4122,因为他们不认为它是扩展的。我不能想象为什么他们会发明自己的东西,而不是遵守一个标准。