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Просмотров: 1838