Skip to content

Instantly share code, notes, and snippets.

@turbanoff
Created December 19, 2012 19:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save turbanoff/4339500 to your computer and use it in GitHub Desktop.
Save turbanoff/4339500 to your computer and use it in GitHub Desktop.
drop table TEST_MD5_WITH_CLOB;
create table TEST_MD5_WITH_CLOB
(a clob
, pk number primary key
);
declare
tmp clob;
begin
delete from TEST_MD5_WITH_CLOB;
tmp := empty_clob();
tmp := tmp || '<REPORT><AGENT>УстДС Слободч</AGENT><FORM>Мониторинг ЗП ДО</FORM><BDATE>2012-11-01</BDATE><KIND>0</KIND><STATE>2</STATE><CHECKED>0</CHECKED><SEND>0</SEND><SUBREPORTS><SUBREPORT><STATE>2</STATE><CHECKED>0</CHECKED><VALUES><VALUE><CODE>М_02_004</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_02_005</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_02_006</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_02_007</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_02_008</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_02_009</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_03_004</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_03_005</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_03_006</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_03_007</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_03_008</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_03_009</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_30_004</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_30_005</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_30_006</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_30_007</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_30_008</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_30_009</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_04_004</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_04_005</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_04_006</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_04_007</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_04_008</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_04_009</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_05_004</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_05_005</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_05_006</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_05_007</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_05_008</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_05_009</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_07_004</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_07_005</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_07_006</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_07_007</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_07_008</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_07_009</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_08_004</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_08_005</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_08_006</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_08_007</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_08_008</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_08_009</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_09_004</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_09_005</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_09_006</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_09_007</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_09_008</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_09_009</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_10_004</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_10_005</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_10_006</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_10_007</CODE><NVAL>5060.00';
tmp := tmp || '</NVAL></VALUE><VALUE><CODE>М_10_008</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_10_009</CODE><NVAL>5060.00</NVAL></VALUE><VALUE><CODE>М_12_001</CODE><NVAL>4.50</NVAL></VALUE><VALUE><CODE>М_12_002</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_003</CODE><NVAL>45.00</NVAL></VALUE><VALUE><CODE>М_12_004</CODE><NVAL>4.00</NVAL></VALUE><VALUE><CODE>М_12_005</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_12_006</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_007</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_008</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_009</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_014</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_015</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_016</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_010</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_011</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_012</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_017</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_018</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_019</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_020</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_021</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_12_022</CODE><NVAL>7.00</NVAL></VALUE><VALUE><CODE>М_13_001</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_002</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_003</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_004</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_005</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_006</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_007</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_008</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_009</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_014</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_015</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_016</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_010</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_011</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_012</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_017</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_018</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_019</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_020</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_021</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_13_022</CODE><NVAL>5.00</NVAL></VALUE><VALUE><CODE>М_15_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_16_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_17_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_18_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_19_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_22_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_23_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_24_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_25_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_33_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_34_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_35_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_26_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_27_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_28_001</CODE><NVAL>9.00</NVAL></VALUE><VALUE><CODE>М_29_001</CODE><NVAL>9.00</NVAL></VALUE></VALUES></SUBREPORT></SUBREPORTS></REPORT>';
tmp:= tmp || chr(13) || chr(10);
insert into TEST_MD5_WITH_CLOB(a, pk) values (tmp, 1);
commit;
end;
/
create or replace function TEST_CLOB_TO_BLOB(cREPORT in clob) return blob
as
blb blob;
dest_offset number := 1;
src_offset number := 1;
lang_context number := 0;
warning number;
begin
dbms_lob.createtemporary(blb, FALSE);
dbms_lob.converttoblob( blb, cREPORT, dbms_lob.getlength(cREPORT), dest_offset, src_offset, NLS_CHARSET_ID('CL8MSWIN1251'), lang_context, warning );
return blb;
end;
/
select rawtohex(DBMS_CRYPTO.HASH(a, 2)) clob_hash
, TEST_CLOB_TO_BLOB(a) blob
, rawtohex( DBMS_CRYPTO.HASH(TEST_CLOB_TO_BLOB(a), 2)) blob_hash
from TEST_MD5_WITH_CLOB
;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment