Дорогие подписчики!
Дорогие подписчики! → Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня разберём DBMS_CRYPTO и DBMS_REPORT. DBMS_CRYPTO — криптографические функции → Пакет DBMS_CRYPTO предоставляет инструменты для хэширования данных. В текущей реализации поддержана функция HASH, позволяющая вычислять контрольные суммы и хэш-значения для строк, чисел и бинарных данных. Основные возможности: · Вычисление хэша алгоритмами MD5, SHA-1, SHA-256; · Поддержка входных данных типов VARCHAR2, CLOB, RAW, BLOB; · Совместимость с синтаксисом Oracle DBMS_CRYPTO.HASH; · Возврат результата в формате RAW. Пример использования: ```sql -- Вычисление MD5-хэша для строки DECLARE v_hash RAW(16); BEGIN v_hash := DBMS_CRYPTO.HASH( UTL_I18N.STRING_TO_RAW('Hello, Digital Q.DataBase', 'AL32UTF8'), DBMS_CRYPTO.HASH_MD5 ); DBMS_OUTPUT.PUT_LINE(RAWTOHEX(v_hash)); END; ``` ```sql -- Вычисление SHA-256 для проверки целостности данных SELECT DBMS_CRYPTO.HASH( UTL_I18N.STRING_TO_RAW(data_column, 'AL32UTF8'), DBMS_CRYPTO.HASH_SH256 ) AS data_hash FROM my_table; ``` Области применения: · Проверка целостности данных при передаче между системами; · Создание контрольных сумм для выгрузок и архивов; · Хэширование паролей и чувствительной информации; · Обнаружение дубликатов через хэш-индексы. DBMS_REPORT — формирование отчётов и преобразования → Пакет DBMS_REPORT предоставляет вспомогательные функции для работы с отчётами и преобразованиями данных. В текущей версии реализованы функции JSON_TO_TEXT и ZLIB2BASE64_CLOB. JSON_TO_TEXT — преобразование JSON в читаемый текст → Функция JSON_TO_TEXT преобразует JSON-документ в форматированное текстовое представление, удобное для включения в отчёты и логи. ```sql -- Преобразование JSON в текстовый вид DECLARE v_json CLOB := '{"employees":[{"id":1,"name":"Иванов"},{"id":2,"name":"Петров"}]}'; v_text CLOB; BEGIN v_text := DBMS_REPORT.JSON_TO_TEXT(v_json); DBMS_OUTPUT.PUT_LINE(v_text); END; ``` ZLIB2BASE64_CLOB — распаковка и декодирование → Функция ZLIB2BASE64_CLOB принимает строку в формате BASE64, сжатую алгоритмом ZLIB, и возвращает распакованный результат в виде CLOB. Полезна для обработки данных, передаваемых в сжатом виде через API и веб-сервисы. ```sql -- Декодирование и распаковка сжатых данных DECLARE v_compressed_base64 VARCHAR2(32767); -- сжатые и закодированные данные v_decompressed CLOB; BEGIN v_decompressed := DBMS_REPORT.ZLIB2BASE64_CLOB(v_compressed_base64); DBMS_OUTPUT.PUT_LINE(v_decompressed); END; ``` Области применения DBMS_REPORT: · Формирование удобочитаемых логов из JSON-сообщений; · Подготовка данных для включения в текстовые отчёты; · Распаковка сжатых ответов от внешних API; · Обработка данных, передаваемых в BASE64 через веб-сервисы.