full text


CREATE OR REPLACE PROCEDURE get_blob_full_text(
p_key1 IN VARCHAR2,
p_key2 IN VARCHAR2 DEFAULT NULL
) IS
l_full_text CLOB := EMPTY_CLOB();
l_chunk_content VARCHAR2(32767);
BEGIN
— Enable large buffer for DBMS_OUTPUT
DBMS_OUTPUT.ENABLE(1000000);

FOR rec IN (
    SELECT 
        blob_to_text_range(t.VERSIONS, c.start_byte, c.end_byte) as chunk_content
    FROM CacheIOIStates t
    CROSS JOIN (
        SELECT 
            level as chunk_num,
            (level * 4000 - 3999) as start_byte,
            (level * 4000) as end_byte
        FROM dual 
        CONNECT BY level <= CEIL(
            (SELECT blob_length(VERSIONS) FROM CacheIOIStates WHERE IOIID = p_key1) / 4000
        )
    ) c
    WHERE t.IOIID = p_key1
    ORDER BY c.chunk_num
) LOOP
    IF rec.chunk_content IS NOT NULL THEN
        DBMS_OUTPUT.PUT_LINE(rec.chunk_content);
    END IF;
END LOOP;

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(‘Error: ‘ || SQLERRM);
END get_blob_full_text;
/



Source link