PL/SQl verbeteringen in Oracle 10g - UTL_COMPRESS |
Met de UTL_COMPRESS package komt er een API mee die het mogelijk maakt om compressie en decompressie van binaire data(RAW, BLOB en BFILE) toe te passen.
Het gebruikt het Lempel-Ziv compressie algoritme wat functioneel gelijkwaardig is aan de gzip utility. Een simpel voorbeeld van het gebruik: SET SERVEROUTPUT ON DECLARE l_original_blob BLOB; l_compressed_blob BLOB; l_uncompressed_blob BLOB; BEGIN -- Initialiseer beide BLOBs naar iets. l_original_blob := TO_BLOB(UTL_RAW.CAST_TO_RAW('1234567890123456789012345678901234567890')); l_compressed_blob := TO_BLOB('1'); l_uncompressed_blob := TO_BLOB('1'); -- Compress de data. UTL_COMPRESS.lz_compress (src => l_original_blob, dst => l_compressed_blob); -- Uncompress de data. UTL_COMPRESS.lz_uncompress (src => l_compressed_blob, dst => l_uncompressed_blob); -- Laat de lengte zien. DBMS_OUTPUT.put_line('Original Length : ' || LENGTH(l_original_blob)); DBMS_OUTPUT.put_line('Compressed Length : ' || LENGTH(l_compressed_blob)); DBMS_OUTPUT.put_line('Uncompressed Length: ' || LENGTH(l_uncompressed_blob)); -- Free tijdelijke BLOBs. DBMS_LOB.FREETEMPORARY(l_original_blob); DBMS_LOB.FREETEMPORARY(l_compressed_blob); DBMS_LOB.FREETEMPORARY(l_uncompressed_blob); END; / |
|
|