Использование md5 в Oracle.

Очень редко в базах данных с которыми я работаю встречаются составные ключи, обычно для удобства я добавляю поле с идентификатором. Если же такое случается, то создать ключ можно сгенерировав md5 хэш по ключевым полям.

Однако сделать это в Oracle не так-то просто не смотря на то, что СУБД реализует функцию для генерации md5, но не одну, а целых 4 из-за чего и возникает проблема с вызовом

При попытке вызвать функцию в запросе выдается сообщение о множественном определении функции

ORA-06553: PLS-307: too many declarations of 'MD5' match this call

Чтобы побороть подобное поведение Oracle можно использовать следующую функцию.

  1.  
  2. CREATE OR REPLACE FUNCTION md5_digest(input_string IN VARCHAR2) RETURN VARCHAR2
  3. IS
  4. hex_digest varchar2(32);
  5. digest varchar2(16);
  6. BEGIN
  7. digest := DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRI NG => input_string);
  8. SELECT Lower(RAWTOHEX(digest)) INTO hex_digest FROM dual;
  9. RETURN hex_digest;
  10. END;
  11. /
  12.  
  13. SELECT md5_digest('message') FROM dual;
  14.  
  15.  

Читайте в блоге

Круглая кнопка на JavaScript.
JavaScript Property Tree. Реализация дерева свойств на JavaScript
Знакомство с WordPress
Создание таблиц в плагине для WordPress
Несколько слов об использовании Mercurial.

Метки: oracle md5

Комментарии:

Войдите на сайт, чтобы оставить комментарий