프로시져 원문
=================================================================================
CREATE OR REPLACE PROCEDURE "DCAUSER"."PROC_LONG_PROCESS" (long_1 OUT VARCHAR2,long_2 OUT VARCHAR2,long_3 OUT VARCHAR2,long_4 OUT VARCHAR2) is
    l_var_text varchar2(2000);
    l_counter number(5) := 0;
    i number(5) := 1;
    j number(5) := 1;
    l_rec_length number(9) := 0;
    l_size number(3) := 200; //DBMS_OUTPUT.PUT_LINE 출력스트링 제한. 더늘려도 됨 
    cursor c1 is
    select MD_LONG from TEST_LONG;
begin
    for c1_rec in c1 loop
        l_rec_length := length(c1_rec.MD_LONG);
        dbms_output.put_line('Record length is: '||l_rec_length);
        while l_rec_length > 0 loop
            l_counter := l_counter + 1;
            l_var_text := substr(c1_rec.MD_LONG,i,l_size);
            //DBMS_OUTPUT.PUT_LINE('Line '||l_counter||': '||l_var_text);
            if j=1 then long_1:=l_var_text;
            end if;
            if j=2 then long_2:=l_var_text;
            end if;
            if j=3 then long_3:=l_var_text;
            end if;
            if j=4 then long_4:=l_var_text;
            end if;
           
           
            i := i + l_size;
            l_rec_length := l_rec_length - l_size;
            j := j+ 1;
        end loop;
        i := 1;
    end loop;
end;


호출부분
================================================================================
declare
m1 varchar2(200); //DBMS_OUTPUT.PUT_LINE 출력스트링 제한. 더늘려도 됨
m2 varchar2(200);
m3 varchar2(200);
m4 varchar2(200);
begin
PROC_LONG_PROCESS(m1,m2,m3,m4);
DBMS_OUTPUT.PUT_LINE('Line '||1||': '||m1);
DBMS_OUTPUT.PUT_LINE('Line '||2||': '||m2);
DBMS_OUTPUT.PUT_LINE('Line '||3||': '||m3);
DBMS_OUTPUT.PUT_LINE('Line '||4||': '||m4);
end;

결과값
=================================================================================
Line 1: MMMMMMMMMMMMMMMMMMMMMMMMMM.....
Line 2: MMMMMMMMMMMMMMMMMMMMMMMMMM.....
Line 3: MMMMMMMMMMMMMMMMMMMMMMMMMM.....
Line 4: MMMMMMMMMMMMMMMMMMMMMMMMMM.....

LONG 필드의 각각 VARCHAR 변수에 200 씩 잘라져서 나옴
AND