2013-11-27 4 views
0

DB ORACLE에 첨부 파일이있는 전자 메일을 보냅니다. 나는 매우 느린이 첨부 파일을 형성합니다.CLOB IS VERY SLOW

FOR x IN (select * 
from l_sulkk 
where PROJECT_ID = proj_id) 
    LOOP 
     v_clob := 
       v_clob 
      || x.CONTRACT_NUMBER 
      || ';' 
      || TO_CHAR(x.PERSON_ID) 
      || ';' 
      || x.BEHAV_MODEL 
      || ';' 
      || TO_CHAR(x.BEHAV_MODEL#DATE_CALC, 'dd.mm.yyyy hh24:mi:ss') 
      || ';' 
      || TO_CHAR(x.DATE_INSERT, 'dd.mm.yyyy hh24:mi:ss') 
      || ';' 
      || TO_CHAR(x.DONE_DATE, 'dd.mm.yyyy hh24:mi:ss') 
      || ';' 
      || x.ERROR_MSG 
      || ';' 
      || TO_CHAR(x.PHONES_ID) 
      || ';' 
      || x.PHONES_NUM 
      || ';' 
      || TO_CHAR(x.INFORMER_PK) 
      || ';' 
      || TO_CHAR(x.CLIENT_TIME_ZONE) 
      || ';' 
      || x.CITIES_KID_FACT*/ 
      || UTL_TCP.crlf; 

    END LOOP; 

이 프로세스를 최적화하는 방법은 어떤 것이 있습니까?

+0

특정 기술을 사용하여 수행 할 수 있다고해서 반드시 *해야하는 것은 아닙니다. 애플리케이션/스크립팅 언어의 작업처럼 보입니다. 저장 프로 시저를 사용하지 않을 것입니다. – Bohemian

+0

질문 해결되었습니다. 요청을 다시 작성하고 clob을 제거하십시오. varchar를 사용하여 회선을 전달하십시오. – user3043884

+2

사용자가 다른 솔루션을 가지고 있다고 사용자가 말합니다. – eaolson

답변

0

당신은 다음 CLOB을 형성 dbms_lob.writeappend를 사용, 32K까지 데이터의 덩어리를 얻을 수 VARCHAR2 버퍼를 사용할 수 있습니다.

은 또한 당신은 SQL 자체에 약간의 사전 접합하는 (그냥 UTL_TCP.crlf 같은 PL/SQL 함수를 사용하지 않습니다.

를 일반적인 생각 그게 전부 할 수 있습니다. 을 또한 check this post, 몇 가지를 얻을 수 있습니다 테스트 결과.