메뉴 건너뛰기

(*.106.188.101) 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

가 크게 작게 위로 아래로 댓글로 가기 첨부
Extra Form
출처 http://egloos.zum.com/nagid/v/3017597
오라클 Merge / 수행 결과값 리턴하지 않을 때

오라클에 Merge 가 있다.


아실랑가 모르겠지만, 오라클에서 복잡하게 대량으로 업데이트, 삭제 할려고 하면
서브쿼리 쓰던가 
조인뷰를 쓰던가
merge구문을 쓰면 된다.

근데 오라클은 Ms-sql과 달리, 쓰는 방식에 제약이 좀 따른다.
조인뷰의 /*+ BYPASS_UJVC */  힌트는 11g에서 안먹힘.

그래서 1:1의 수정이 아닌 경우에는 좌절됨.
서브쿼리는 속도가 느리다.
그래서 merge를 쓰면 쾌적한 업데이트와 삭제를 하는데
문제는 이게 수행 결과값을 리턴하지 않는다는 것이다.
즉, 몇개 넣었다라는 메세지를 안보내준다.


위를 보다시피 안보인다.
뭐가 얼만큼 실행되었는지 보이지 않는다는 말이다.
한마디로 장님이 된다는 소리.
100만건 업데이트 했는지, 10건 업데이트 했는지 모른다면 어찌 그걸 사용할 수 있으랴?
그래서 존나 인터넷으로 달렸다.
그래서 찾았다.
오호라 구글신이시여

먼저 package를 만들어야 함.

CREATE OR REPLACE PACKAGE etl AS

   c_inserting CONSTANT PLS_INTEGER := 0;
   c_updating  CONSTANT PLS_INTEGER := 1;

   FUNCTION merge_counter (
            action_in IN PLS_INTEGER DEFAULT c_inserting
            ) RETURN PLS_INTEGER;

   FUNCTION get_merge_update_count RETURN PLS_INTEGER;

   FUNCTION get_merge_update_count (
            merge_count_in IN PLS_INTEGER
            ) RETURN PLS_INTEGER;

   FUNCTION get_merge_insert_count RETURN PLS_INTEGER;

   FUNCTION get_merge_insert_count (
            merge_count_in in PLS_INTEGER
            ) RETURN PLS_INTEGER;

   PROCEDURE reset_counters;

END etl;


CREATE OR REPLACE PACKAGE BODY etl AS

   g_update_counter PLS_INTEGER NOT NULL := 0;
   g_insert_counter PLS_INTEGER NOT NULL := 0;

   /*----------- FUNCTION merge_counter -----------*/
   FUNCTION merge_counter (
            action_in IN PLS_INTEGER DEFAULT c_inserting
            ) RETURN PLS_INTEGER IS
   BEGIN
      CASE action_in
         WHEN c_updating
            THEN g_update_counter := g_update_counter + 1;
         WHEN c_inserting
            THEN g_insert_counter := g_insert_counter + 1;
         ELSE
            RAISE PROGRAM_ERROR;
      END CASE;
      RETURN 0;
   END merge_counter;

   /*----------- FUNCTION get_merge_update_count V1 -----------*/
   FUNCTION get_merge_update_count
      RETURN PLS_INTEGER is
   BEGIN
      RETURN g_update_counter;
   END get_merge_update_count;

   /*----------- FUNCTION get_merge_update_count V2 -----------*/
   FUNCTION get_merge_update_count (
            merge_count_in IN PLS_INTEGER
            ) RETURN PLS_INTEGER IS
   BEGIN
      RETURN NVL( merge_count_in - g_insert_counter, 0 );
   END get_merge_update_count;

   /*----------- FUNCTION get_merge_insert_count V1 -----------*/
   FUNCTION get_merge_insert_count
      RETURN PLS_INTEGER IS
   BEGIN
      RETURN g_insert_counter;
   END get_merge_insert_count;

   /*----------- FUNCTION get_merge_insert_count V2 -----------*/
   FUNCTION get_merge_insert_count (
            merge_count_in IN PLS_INTEGER
            ) RETURN PLS_INTEGER IS
   BEGIN
      RETURN NVL( merge_count_in - g_update_counter, 0 );
   END get_merge_insert_count;

   /*----------- FUNCTION reset_counters -----------*/
   PROCEDURE reset_counters IS
   BEGIN
      g_update_counter := 0;
      g_insert_counter := 0;
   END reset_counters;

END etl;


여기까지만 쓰면 만사 오케이

SET SERVEROUTPUT ON;
BEGIN
    MERGE INTO  사원테이블1 X
    USING(
           SELECT a.emp_id, b.deptcd_acct  rep_comp_cd2 
               FROM 사원테이블1 a
                  , 사원테이블2 b
              WHERE a.emp_id= b.emp_id
                and b.status = '1'
          ) B
    ON (X.emp_id = B.emp_id)
    WHEN MATCHED THEN
          UPDATE 
          SET  X.in_user = '업데이트1'
            ,  X.in_time = SYSDATE
          ;
          
    DBMS_OUTPUT.PUT_LINE( TO_CHAR(SQL%ROWCOUNT) || ' 줄 반영되었어..');
    DBMS_OUTPUT.PUT_LINE( TO_CHAR(etl.get_merge_insert_count) || ' 줄 추가되었어.');
    DBMS_OUTPUT.PUT_LINE( TO_CHAR(etl.get_merge_update_count( SQL%ROWCOUNT ))|| ' 줄 수정되셨어.');

END;




  1. 텍스트 분석 솔루션 (Smart TA)

    미소정보기술(대표 안동욱)이 빅데이터 플랫폼을 활용해 암 발생을 줄이는 연구에 참여한다. 또 서울시의 '인공지능(AI)을 활용한 민생범죄 수사지원 분석사업‘에도 AI 솔루션을 개발, 기여했다. 대우건설 프로젝트에서 IBM의 '왓슨'을 물리치고 수주하는 등 ...
    Date2019.11.09 Reply0 Views582 file
    Read More
  2. No Image

    빅데이터의 속성 3V, 4V, 5V

    빅데이터의 속성 3V, 4V,5V 목차1. 빅데이터의 공통적 속성 3V 2. 빅데이터의 새로운 V - 정확성(Veracity) 3. 빅데이터의 새로운 V - 가변성(Variability) 4. 빅데이터의 새로운 V - 시각화(Visualization) 5. 아직 제대로 정의되지 않은 빅데이터 1. 빅데이...
    Date2019.08.12 Reply0 Views792 file
    Read More
  3. No Image

    마크베이스(Machbase) - IoT Gateway for Edge Analytics

    What is this for? If you already have or plan to build services that require IoT gateway devices and need to analyze big data generated from numerous sensors in real-time, Machbase Edge Analytics Server is the right choice. When the volume o...
    Date2019.07.27 Reply0 Views811
    Read More
  4. DB접근제어 - Chakra (샤크라)

    DB접근제어 (Chakra) 제품개요 데이터베이스 접근제어를 위한 필수 솔루션 DB Access Control & Audit_Chakra Chakra MAX는 고객의 데이터베이스 내에 저장되어있는 소중한 정보자산 및 개인정보를 안전하고 편리하게 운영할 수 있는 최고의 해법을 드립니...
    Date2019.07.19 Reply0 Views628 file
    Read More
  5. DB접근제어 - DBSAFER

    접근제어 방식 DBSAFER - DB 접근제어 보안 솔루션 - DBSAFER는 사용자의 접속과 권한을 제어하고 실시간 모니터링을 통해 정책 위반 사항을 실시간으로 차단하는 DB보안 솔루션입니다. - DBSAFER는 DB서버 시스템과 별도의 장비로 구성되어...
    Date2019.07.19 Reply0 Views9246 file
    Read More
  6. EDI (Electronic Data Interchange)

    EDI (Electronic Data Interchange) 전자문서교환. 표준화된 상거래서식 또는 공공서식을 서로 합의된 통신 표준에 따라 컴퓨터 간에 교환하는 정보전달방식 EDI 개념도 (출처: 컴퓨터인터넷IT용어대사전) 주문서, 납품서, 청구서 등 무역에 필요한 각종 서류...
    Date2017.02.27 Reply0 Views514 file
    Read More
  7. No Image

    오라클, 특정 테이블의 인덱스명과 구성컬럼 조회 SQL

    SQL 작성시나 튜닝시 테이블에 인덱스는 중요한 팩터입니다. 토드나 오렌지와 같은 GUI툴은 사용하면 손쉽게 테이블 마다 생성된 인덱스를 볼 수 있는데 툴이 없을때 막상 특정 테이블의 인덱스를 찾을려면 귀찮을때가 많죠. 저두 매번 찾기가 귀찮아 이번에 ...
    Date2016.05.23 Reply0 Views492
    Read More
  8. No Image

    Oracle Data Dictionary

     Oracle Data Dictionary
    Date2016.05.23 Reply0 Views489
    Read More
  9. Oracle Merge (수행 결과값 리턴않음)

    오라클 Merge / 수행 결과값 리턴하지 않을 때 오라클에 Merge 가 있다. 아실랑가 모르겠지만, 오라클에서 복잡하게 대량으로 업데이트, 삭제 할려고 하면 서브쿼리 쓰던가 조인뷰를 쓰던가 merge구문을 쓰면 된다. 근데 오라클은 Ms-sql과 달리, 쓰는 방식에 ...
    Date2016.05.21 Reply0 Views698 file
    Read More
  10. No Image

    ODBC. JDBC

    ODBC 어떤 응용프로그램을 사용하는지에 관계없이, 데이터베이스를 자유롭게 사용하기 위하여 만든 응용프로그램의 표준방법을 말한다. 데이터베이스 관리 시스템(DBMS)에 관계없이 어떤 응용 프로그램에서나 모두 접근하여 사용할 수 있도록 하기 위하여 마이...
    Date2016.05.19 Reply0 Views481
    Read More
  11. No Image

    (빅데이터 분석) R / R-studio 소개

    R-Studio 하나의 큰 용량이 아닌 작고 많은 데이터를 분석을 하고자 했다. 이에 가장 적합한 도구는 무엇일까? 빅데이터 트랜드를 대표하는 하둡(Hadoop)의 대용량 분산 파일 시스템(Distributed File System)과 맵리듀스(Map Reduce)는 하나의 큰 용량을 처...
    Date2016.05.19 Reply0 Views504
    Read More
  12. No Image

    Oracle wm_concat, listagg, xml parsing

    Oracle 11gdml listagg : http://estenpark.tistory.com/352 Oracle 10g의 wm_concat : http://blog.naver.com/heart1002/150188149689 XML Parsing : http://blog.naver.com/tkddlf4209/220512139480
    Date2016.05.19 Reply0 Views573
    Read More
  13. No Image

    데이터베이스 개념, 스키마, DB언어, 관계형 데이터베이스의 종...

    데이터베이스 개념, 스키마, DB언어, 관계형 데이터베이스의 종류, 키의 개념, DB설계, 개체관계도[ERD] 데이터베이스 정의 - 데이터베이스는 특정 조직의 기능을 수행하는 데 필요한 상호 관련 된 데이터들의 모임. 데이터베이스 구성요소 - 데이터베이스를 ...
    Date2016.05.14 Reply0 Views478
    Read More
  14. No Image

    Oracle - sqldeveloper-4.1.3.20.78-x64

    Oracle - sqldeveloper-4.1.3.20.78-x64
    Date2016.05.08 Reply0 Views493
    Read More
  15. No Image

    오라클 SQL & PLSQL 강좌 #3/3

    오라클 SQL & PLSQL 잠자리 #3/3
    Date2016.05.08 Reply0 Views486
    Read More
  16. No Image

    오라클 SQL & PLSQL 강좌 #2/3

    오라클 SQL & PLSQL 잠자리 강좌 #2/3
    Date2016.05.08 Reply0 Views438
    Read More
  17. No Image

    오라클 SQL & PLSQL 강좌 #1/3

    오라클 SQL & PLSQL 강좌 #1/3
    Date2016.05.08 Reply0 Views472
    Read More
  18. Crystal Reports OLAP

    Crystal Reports OLAP
    Date2016.04.30 Reply0 Views594 file
    Read More
  19. No Image

    빅데이터 IBM 자료

    1. 빅데이터 소개 자료 아래 링크를 누르면 소개자료가 저장된 Box로 이동합니다. https://ibm.box.com/s/0e7wkmbp4u4n8ukgzsttpyoryt71saaw 2. 한국IBM Analytics 유튜브 페이지 아래 유튜브 리스트에서 필요한 부분을 선택하셔서 시청하시면 쉽게 이해하시는...
    Date2016.04.29 Reply0 Views428
    Read More
  20. No Image

    Large Object - LOB의 저장방식 및 사용법

    Large Object - LOB의 저장방식 및 사용법 Oracle의 경우, 대용량 데이터를 처리하기 위해서 Oracle 8i부터 대용량 데이터를 저장할 수 있는 LOB(Large Object) 타입이 등장했다. LOB 타입 등장 이전에는 대용량 데이터가 LONG 타입으로 처리됐으며 LONG 타입...
    Date2016.04.25 Reply1 Views498
    Read More
목록
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7