Joomla 3.1 Templates by FatCow Coupon

Использование GUID в ORACLE

Категория: Блог Опубликовано 24.05.2017

GUID некоторая уникальная последовательность символов, в некоторых случаях, может использоваться в качестве первичного ключа. 
Рассмотрим основные работы с GUID в ORACLE.

Получить GUID в ORACLE можно, воспользовавшись функцией 
sys_guid()
запрос в этом случае будет выглядеть следующим образом


select
sys_guid() from dual


результат
4A9B3CF364FB92CAE050A8C0670A0D3A
Для получения GUID в PL SQL используются несколько аналогичная команда
Следует так же отметить, что для ранения GUID в ORACLE используются следующие типы данных
raw(16) и varchar2(32);

следующие примеры демонстрируют работу c GUID в PL/SQL ORACLE

declare
  p_raw raw(16); 
begin
  p_raw := sys_guid;
  dbms_output.put_line(p_raw);
end;


результат 4A9B3CF3650092CAE050A8C0670A0D3A 

declare
  p_vc2 varchar2(32);
begin
  p_vc2 := sys_guid;
  dbms_output.put_line(p_vc2);
end;


результат 4A9B3CF3652292CAE050A8C0670A0D3A 

Часто бывает необходимо получить GUID в форматированном виде, для этого можно воспользоваться стандартными функциями ORACLE для работы со строками

select '{' || substr(sys_guid(), 1, 8) || '-' || substr(sys_guid(), 9, 4) || '-' ||
       substr(sys_guid(), 13, 4) || '-' || substr(sys_guid(), 17, 4) || '-' ||
       substr(sys_guid(), 20) || '}' as S_GUID
  from dual;



аналогично для PL SQL

declare
  p_vc2 varchar2(32);
begin
  p_vc2 := sys_guid;
  dbms_output.put_line('{'||substr(p_vc2,1,8)||'-'||substr(p_vc2,8,4)||'-'||substr(p_vc2,12,4)||'-'||substr(p_vc2,16,4)||'-'||substr(p_vc2,20,12)||'}');
end;


я встречался на практике с еще одним более экзотическим способом получения GUID в ORACLE , он заключался в использовании пакета DBMS_RANDOM и регулярных выражений

select regexp_replace(
    to_char(
        DBMS_RANDOM.value(0, power(2, 128)-1),
        'FM0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'),
    '([a-f0-9]{8})([a-f0-9]{4})([a-f0-9]{4})([a-f0-9]{4})([a-f0-9]{12})',
    '\1-\2-\3-\4-\5') from dual
Просмотров: 162