2021년 12월 31일 금요일

오라클동영상,FORALL 기반 벌크 입력(BULK INSERT) 실습, DMLL성능향상, 오라클교육, 오라클학원, SQL교육, SQL학원, 자바학원, 자바교육, SQL동영상

 오라클동영상,FORALL 기반 벌크 입력(BULK INSERT) 실습, DMLL성능향상, 오라클교육, 오라클학원, SQL교육, SQL학원, 자바학원, 자바교육, SQL동영상


http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=722 


FORALL 기반 벌크 입력(BULK INSERT) 실습, DMLL성능향상, 오라클교육, 오라클학원, SQL교육, SQL학원, 자

FORALL 기반 벌크 입력(BULK INSERT) 실습, DMLL성능향상, 오라클교육, 오라클학원, SQL교육, SQL학원, 자바학원, 자바교육, SQL동영상오라클 PL/SQL성능향상을 위한FORALL기반 BULK INSERT실습[실습]사번(empno),

ojc.asia

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 


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

오라클 PL/SQL




성능향상을 위한

FORALL기반 BULK INSERT


실습




[실습]

사번(empno), 이름(ename), 직무(job) 3개의 컬럼을 갖는 BULKTEST라는 테이블을 생성하여 100만건 정도 데이터를 입력하는데. 개별 건씩 입력 하는것과 FORALL을 이용하여 벌크로 INSERT하는 방식의 성능차이에 대해 확인해 보겠습니다.

FORALL을 이용하여 DML문을 작성하면 한 번에 한 행씩 실행될 모든 DML 문을 생성하고 SQL 실행엔진에 한번에 모두 보냅니다.

FORALL 구문을 이용하면 INSERT, UPDATE, DELETE와 같은 DML 사용시 컬렉션을 사용하며 매우 빠르게 작업을 할 수 있습니다.

FORALL구문은 데이터를 오라클의 TABLE TYPE(배열)에 담아서 한번에 SQL 실행엔진에 넘겨서 실행을 하므로 성능 향상에 도움이 됩니다.


1. 실습 테이블 생성

create table bulktest (
empno number primary key,
ename varchar2(20),
job   varchar2(50));


set timing on
alter system flush SHARED_POOL;

2. 일반적인 반복문을 통한 개별 INSERT
-- 24초 경과
declare
          cnt number := 0;
begin
     while (cnt < 1000000) loop
            cnt := cnt + 1;
            insert /*+ loop insert */ into bulktest values ( cnt, cnt || '길동', '개발직');               
      end loop;
      commit;
end;



3. Shared Pool에서 파싱된 SQL문 및 실행횟수 확인

-- 오라클이 INSERT 구문을 내부적으로 바인드 변수 처리를 하여 SQL문장은 하나, 실행횟수는 1,000,000임을 알수 있습니다.
select substr(sql_text,1,60) "sql", count(*),
       sum(executions) "총실행횟수"
from v$sqlarea
where sql_text like '%loop%'
group by substr(sql_text,1,60)
having count(*) > 0
order by 2;

select count(1) from bulktest;
truncate table bulktest;

4. FORALL을 이용한 BULK INSERT

alter system flush SHARED_POOL;

-- 2초
declare
  type bulktype is table of bulktest%rowtype index by binary_integer;
  mydata bulktype;
begin
  for i in 1 .. 1000000 loop
    mydata(i).empno := i;
    mydata(i).ename := i || '길동';
    mydata(i).job := '개발직';
  end loop;

  forall i in 1 .. 1000000 insert /*+ bulk insert */  into bulktest values mydata(i);
  commit;
end;


5. Shared Pool에서 파싱된 SQL문 및 실행횟수 확인

-- 오라클이 INSERT 구문을 내부적으로 바인드 변수 처리를 하여 SQL문장은 하나, 실행횟수도 하나임을 확인할 수 있습니다.
select substr(sql_text,1,60) "sql", count(*),
       sum(executions) "총실행횟수"
from v$sqlarea
where sql_text like '%bulk%'
group by substr(sql_text,1,60)
having count(*) > 0
order by 2;


select count(1) from bulktest;
truncate table bulktest;



#FORALL, #벌크입력, #BULKINSERT, #SQL튜닝, #오라클교육, #오라클학원,#SQL교육, #SQL학원, #자바학원, #자바교육, #SQL동영상, FORALL, 벌크입력, BULKINSERT, SQL튜닝, 오라클교육, 오라클학원,SQL교육, SQL학원, 자바학원, 자바교육, SQL동영상


[오라클동영상]오라클 패키지, 프로시저, 함수 실습, Oracle Package, Procedure, Function, refcursor, 참조커서

 [오라클동영상]오라클 패키지, 프로시저, 함수 실습, Oracle Package, Procedure, Function, refcursor, 참조커서






오라클 PL/SQL




패키지, 프로시저, 함수 실습


강의 : 이종철







패키지 명세가 아래와 같다. 패키지 바디를 구현하고 각각 호출하여 테스트 하세요.

(EXCEPTION 절을 이용하여 예외처리)

create or replace package emp_pkg2 as
-- 사번을 받아 사원명을 출력
procedure print_ename( p_empno number );


-- 사번을 받아 관리자 이름을 출력(mgr 칼럼이 관리자ID 임)
procedure print_mname( p_empno number );


-- 부서코드를 입력받아 해당 부서원들의 사번, 이름, 급여추출
function get_emps(p_deptno number) return sys_refcursor;


end emp_pkg2;
/



create or replace package body emp_pkg2 as
procedure print_ename(p_empno number)
is
v_ename emp.ename%type;
begin
select ename into v_ename
from emp
where empno = p_empno;
dbms_output.put_line(v_ename);
exception
when no_data_found then
dbms_output.put_line('no emp...');
when others then
dbms_output.put_line(SQLCODE || SQLERRM);
end;


procedure print_mname(p_empno number)
is
v_mname emp.ename%type;
begin
select e2.ename into v_mname
from emp e1, emp e2
where e1.mgr = e2.empno
and e1.empno = p_empno;
dbms_output.put_line(v_mname);
exception
when no_data_found then
dbms_output.put_line('no emp...');
when others then
dbms_output.put_line(SQLCODE || SQLERRM);
end;


function get_emps(p_deptno number) return sys_refcursor
is
empcursor sys_refcursor;
sqlstr varchar2(2000);
begin
sqlstr := 'select empno, ename, sal from emp where deptno = :1';
open empcursor for sqlstr using p_deptno;
return empcursor;
end;


end emp_pkg2;
/



[패키지 호출 테스트]

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제



#오라클, #자바, #패키지, #프로시저, #오라클함수, #OraclePackage, #OracleProcedure, #ORacleFunction, #오라클교육, #오라클학원, #SQL교육, #SQL학원, #자바교육, #자바학원, 오라클, 자바, 패키지, 프로시저, 오라클함수, OraclePackage, OracleProcedure, ORacleFunction, 오라클교육, 오라클학원, SQL교육, SQL학원, 자바교육, 자바학원




오라클 프로시저실습, INOUT파라미터, 반복문, LOOP ENDLOOP,FOR, WHILE, SQL교육, ORACLE교육, JAVA교육, 오라클학원, 자바학원, SQL학원, SQL동영상

 오라클 프로시저실습, INOUT파라미터, 반복문, LOOP ENDLOOP,FOR, WHILE, SQL교육, ORACLE교육, JAVA교육, 오라클학원, 자바학원, SQL학원, SQL동영상





오라클 PL/SQL



프로시저 작성

반복문(LOOP~END LOOP, WHILE, FOR)

INOUT 파라미터


실습





[실습]

주어진 수 까지의 짝수의 합을 구하여 리턴하는 프로시저를 작성합니다.
DO ~ LOOP, WHILE LOOP, FOR LOOP 이용 3가지 방법
INOUT 파라미터 이용

set serveroutput on


create or replace procedure getSum(num in out number)
is
tot number := 0;
i number := 0 ;
begin
loop
exit when i >= num;
i := i + 1;
if mod(i, 2) = 0 then
tot := tot + i;
end if;
end loop;


num := tot;
end;
/


create or replace procedure getSum(num in out number)
is
tot number := 0;
i number := 0 ;
begin
while(i < num) loop
i := i + 1;
if mod(i, 2) = 0 then
tot := tot + i;
end if;
end loop;


num := tot;
end;
/


create or replace procedure getSum(num in out number)
is
tot number := 0;
begin
for i in 1..num LOOP
if mod(i, 2) = 0 then
tot := tot + i;
end if;
end loop;


num := tot;
end;
/


declare
num number := 10;
begin
getSum(num);
dbms_output.put_line('total = ' || num);
end;


total = 30





#오라클, #오라클프로시저실습,#INOUT파라미터, #PLSQL반복문, #오라클교육, #오라클학원, #SQL교육, #SQL학원, #SQL동영상, #오라클동영상, #자바학원, #자바교육, 오라클, 오라클프로시저실습,INOUT파라미터, PLSQL반복문, 오라클교육, 오라클학원, SQL교육, SQL학원, SQL동영상, 오라클동영상, 자바학원, 자바교육



2021년 12월 30일 목요일

[동영상교육학원]오라클 프로시저(Oracle Procedure) 실습, In, Out 파라미터, 오라클교육/오라클학원/ORACLE교육/ORACLE학원/자바교육/JAVA학원

 

[동영상교육학원]오라클 프로시저(Oracle Procedure) 실습, In, Out 파라미터, 오라클교육/오라클학원/ORACLE교육/ORACLE학원/자바교육/JAVA학원






오라클 프로시저(Oracle Procedure) 실습, In, Out 파라미터, 오라클교육, SQL교육, 자바교육, 오라클학원, SQL학원, 자바학원



오라클 PL/SQL




프로시저 실습

(Out 파라미터)






Procedure 실습


IN 파라미터로 사번을 입력받고, OUT 파라미터로 emp%rowtype 변수를 사용하여
해당 사번의 전체 레코드를 OUT 변수에 담아 결과를 되돌리는  프로시저를 작성하세요.

ACCEPT문으로 사번을 입력받아, 

익명 PL/SQL블럭의 begin ~ end에서 작성한 프로시저를 호출하여 리턴받은 
EMP 테이블의 레코드의 ENAME, SAL, JOB을 DBMS_OUT.PUT_LINE으로  출력하세요.



set serveroutput on

create or replace procedure getEmp

(p_empno in number, emp_r out emp%rowtype)

is

begin

   select * into emp_r 

   from emp 

   where empno = p_empno;

end getEmp;

/


accept p_empno prompt 'Enter the empno : '


declare

  empInfo emp%rowtype;

begin

  getEmp(&p_empno, empInfo);

  DBMS_OUTPUT.PUT_LINE('ename : ' || empInfo.ename);

  DBMS_OUTPUT.PUT_LINE('sal : ' || empInfo.sal);

  DBMS_OUTPUT.PUT_LINE('job : ' || empInfo.job);

end;

/



#오라클프로시저, #OracleProcedure, #프로시저, #PLSQL, #Out파라미터, #오라클교육, #SQL교육, #자바교육, #오라클학원, #SQL학원, #자바학원, 오라클프로시저, OracleProcedure, 프로시저, PLSQL, Out파라미터, 오라클교육, SQL교육, 자바교육, 오라클학원, 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...