본문 바로가기

Server Oriented/DB-Oracle

UTL_HTTP 패키지를 사용하여 오라클 DB 에서 URI 호출하는 DB 프로시저 생성

혹시 10g 나 9i 에선 잘 되던 것이 11g 로 바뀌고 난 다음에 작동하지 않는다면 아래 링크를 클릭해 보세요.


이곳에서는 단순히 URI 를 호출하는 방식을 기술합니다.
Response 에 담아와서 추가적인 작업을 할 수도 있습니다.
DB 프로시저에 .jsp 를 일단 등록했으니, DB Job 에 등록하면 매번 자동으로 돌아가게 할 수가 있습니다.
Java 로 만들어서 Crontab 에 돌리는 것과 같은 효과입니다.

CREATE OR REPLACE PROCEDURE SP_A
IS

  REQ       UTL_HTTP.REQ;
  RESP      UTL_HTTP.RESP;

BEGIN

  UTL_HTTP.SET_TRANSFER_TIMEOUT(5); -- 5초 이상 걸린다면 문제가 있는 것
--UTL_HTTP.SET_PROXY('PROXY.MY-COMPANY.COM', 'CORP.MY-COMPANY.COM'); -- PROXY 내용
  UTL_HTTP.SET_BODY_CHARSET('UTF-8'); -- UTF-8. BEGIN_REQUEST 이전에 SET_BODY_CHARSET 를 설정
  REQ := UTL_HTTP.BEGIN_REQUEST('http://....jsp'); -- 호출되는 .jsp. .asp 나 .php 등 모든 URI 가능
  UTL_HTTP.SET_HEADER(REQ, 'User-Agent', 'Mozilla/4.0');
  RESP := UTL_HTTP.GET_RESPONSE(REQ);
  UTL_HTTP.END_RESPONSE(RESP); -- HTTP CLOSE

  EXCEPTION
  WHEN OTHERS
  THEN DBMS_OUTPUT.PUT_LINE ('err=' || SQLERRM);

END
;