Вообще, чтобы сгенерировать какой-то GUID достаточно функции GEN_UUID()
Примеры гидов, полученных этой функцией: 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 - читабельный гид