레이블이 PLSQL BULKCOLLECTINTO인 게시물을 표시합니다. 모든 게시물 표시
레이블이 PLSQL BULKCOLLECTINTO인 게시물을 표시합니다. 모든 게시물 표시

2022년 1월 1일 토요일

PLSQL BULK COLLECT INTO 실습, SELECT, FETCH에서 BULK COLLECT INTO 사용하기, 오라클교육, SQL교육, JAVA교육, 오라클학원, SQL학원, 자바학원, 오라클동영상

 PLSQL BULK COLLECT INTO 실습, SELECT, FETCH에서   BULK COLLECT INTO 사용하기, 오라클교육, SQL교육, JAVA교육, 오라클학원, SQL학원, 자바학원, 오라클동영상





https://youtu.be/x6gW4inKtZg


https://www.youtube.com/watch?v=RE79vqW_s6o&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=31 

https://www.youtube.com/watch?v=mAQNkUZ_9CA&list=PLxU-iZCqT52CfP98Y4gCDKIm52tKvgy36&index=30 




SELECT, FETCH에서 

BULK COLLECT INTO 사용하기


[BULK COLLECT INTO]

SELECT에서 BULK COLLECT INTO를 이용하면 여러건의 레코드를 한번에 읽어들여 속도를 향상 시킬 수 있으며,  커서에서도 FETCH를 하는 경우에도 한건씩 꺼내는것 보다 한번에 꺼낸다면 속도 향상에 도움이 될 수 있습니다.  물론 이 경우 읽어들이는 데이터에 따른 메모리 사용량은 고려 되어야 합니다.


BULK COLLECT INTO 다음에는 여러 레코드를 한번에 담을 수 있는 데이터 타입이 와야 하는데 PL/SQL의 TABLE 타입(일차원 배열)을 사용합니다.


다음과 같은 경우에 사용 가능 합니다.


SELECT 컬럼리스트  BULK COLLECT INTO 컬렉션

FETCH 커서명 BULK COLLECT INTO 컬렉션

EXECUTE IMMEDIATE 쿼리문자열  BULK COLLECT INTO 컬렉션


[실습]

set timing on
select * from myemp1;

-- 일반적인 FOR LOOP 커서 사용
declare    
    cursor emp_cur is select * from myemp1 where rownum < 400000;
    tot number := 0;
    emp_r myemp1%rowtype;
begin 
    open emp_cur;
    loop  
        fetch emp_cur into emp_r;
        exit when emp_cur%notfound;
        tot := tot + emp_r.sal;  
    end loop;
    dbms_output.put_line('tot : ' || tot);   
    close emp_cur;
exception
    when others then
        dbms_output.put_line(sqlerrm(sqlcode));
end;

-- SELECT절에서 BULK COLLECT INTO 사용하기
declare 
    type emp_r_array is table of myemp1%rowtype; 
    emp_table emp_r_array;
    tot number := 0;
begin
    select * bulk collect into emp_table
    from myemp1 
    where rownum < 400000;
    
    DBMS_OUTPUT.PUT_LINE('SQL%ROWCOUNT : ' || SQL%ROWCOUNT);
    
    for i in emp_table.first..emp_table.last loop  
        tot := tot + emp_table(i).sal;    
    end loop;
    
    dbms_output.put_line('tot : ' || tot);    
exception
    when others then
        dbms_output.put_line(sqlerrm(sqlcode));
end;


-- FETCH에서 BULK COLLECT INFO 사용하기
create or replace procedure getEmp3
is
   type empcurtype is ref cursor;
   type empnolist is table of myemp1.empno%type;
   type enamelist is table of myemp1.ename%type;
   
   emp_cur empcurtype;
   empnos empnolist;
   enames enamelist;
begin
   open emp_cur for 'select empno, ename from myemp1 where rownum < 1000';
   fetch emp_cur bulk collect into empnos, enames;
   for i in enames.first..enames.last loop
      dbms_output.put_line(enames(i));
   end loop;   
   close emp_cur;
end;
/
exec getEmp3;


#PLSQL #BULKCOLLECTINTO , #오라클커거, #forall, #오라클교육, #SQL교육, #JAVA교육, #오라클학원, #SQL학원, #자바학원, #오라클동영상, PLSQL BULKCOLLECTINTO , 오라클커거, forall, 오라클교육, SQL교육, JAVA교육, 오라클학원, SQL학원, 자바학원, 오라클동영상, 

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...