Вообще, чтобы сгенерировать какой-то GUID достаточно функции GEN_UUID()
Примеры гидов, полученных этой функцией: PLЗк9Ц`I®…f'СЯJV, H e- 3 J«Ш§л e„F
Но если нужно получить читабельный GUID:
Пример вызова:
Примеры гидов, полученных этой функцией: PLЗк9Ц`I®…f'СЯJV, H e- 3 J«Ш§л e„F
Но если нужно получить читабельный GUID:
create or alter procedure get_hex_uuid returns(real_uuid char(16) character set OCTETS, hex_uuid varchar(32)) AS declare variable i integer; declare variable c integer; BEGIN real_uuid = GEN_UUID(); hex_uuid = ''; i = 0; while (i < 16) do begin c = ascii_val(substring(real_uuid from i+1 for 1)); if (c < 0) then c = 256 + c; hex_uuid = hex_uuid || substring('0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ' from bin_shr(c, 4) + 1 for 1) || substring('0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ' from bin_and(c, 63) + 1 for 1); i = i + 1; end suspend; END
Пример вызова:
select real_uuid, hex_uuid from get_hex_uuid
Где: real_uuid - оригинальный гид, hex_uuid - читабельный гид
select UUID_TO_CHAR(gen_uuid()) from rdb$database;
ОтветитьУдалить