Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Oracle XML: вопросы  [new]
mcwhite
Member

Откуда: Москва
Сообщений: 423
Необходимо написать процедуру, генерирующую XML-документ, который должен удовлетворять след. условиям:

1) размер XML-документа - свыше 4000 байт;
2) в качестве значения одного из атрибутов самого внешнего тега должна быть контрольная сумма, вычисляемая по алгоритму MD5.

Алгоритм MD5 в Oracle реализован: в пакете sys.dbms_obfuscation_toolkit есть процедура/функция (перегруженная) md5. Но дело в том, что эта подпрограмма принимает входной параметр либо типа raw, либо типа varchar2. А размер объектов этих типов ограничен соотв-но 2000 и 4000 байтами.

Есть ли другая возм-ть с помощью оракловых средств подсчитать контрольную сумму текста - текста размером свыше 4000 байт?
29 апр 06, 13:52    [2616671]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XML: вопросы  [new]
OracleX
Member

Откуда:
Сообщений: 1998
Для книги Тома Кайта "Oracle для профессионалов" можно скачать файл,
в котором есть исходник пакета crypt_pkg

Кусочек:
-- chunksize - Controls the size of the pieces of the LOB
--             we encrypt.  Also controls the amount of
--             data sent to MD5 when checksumming a LOB
g_chunkSize      CONSTANT number default 32000;


    -- A set of functions to take a string of up to 32 KB in size
    -- or a LOB of any size, and compute the md5 checksum of it.

function md5lob( p_data in blob ) return checksum_raw
is
    l_checksum_raw  checksum_raw;
begin
    execute immediate
    'begin :x := dbms_obfuscation_toolkit.md5( input => :y ); end;' 
    using OUT l_checksum_raw, IN dbms_lob.substr(p_data,g_chunksize,1);

    return l_checksum_raw;
end;
29 апр 06, 20:09    [2617035]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XML: вопросы  [new]
OracleX
Member

Откуда:
Сообщений: 1998
Для Oracle Release 10.2.0.1 в dbms_obfuscation_toolkit.md5 можно максимально передать 32512 байт.
29 апр 06, 22:17    [2617162]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить