안녕하세요, 지난번에 로그 수집관련해서 질문을 했던 정진우 라고합니다. ^^
데이터를 조회한 후에, 데이터 유무를 판단해 없으면 데이터를 삽입하려고하는데요.
제 딴에는 오라클쪽을 공부한다고 이래저래 알아보고,
아래와같은 임의블록 을 활용해 쿼리를 작성해보았습니다.
작동이 안되는 것은 아닌데, 조금 더 효율적인 면이나 여러가지면으로 도움을 구하고자 질문을 올립니다.
-- 1.URL 정보를 삽입한다. (없으면 재 삽입을 해야하기 때문에)
SET SERVEROUTPUT ON;
DECLARE
v_page_index number;
v_page_url varchar2(200);
v_url_type char(1);
v_url_prefix char(1);
BEGIN
v_page_index := 0;--페이지가 존재하는지 알아보기위한 임이의 변수 초기화
v_page_url := '127.0.0.1:8989/track_log/webBugTest.jsp';
v_url_type := '1';
v_url_prefix := '0'; --http://
DBMS_OUTPUT.ENABLE;
SELECT id_url_info into v_page_index
FROM url_info
WHERE url_value = v_page_url AND url_type = v_url_type AND url_prefix = v_url_prefix;
DBMS_OUTPUT.PUT_LINE('해당 URL 데이터가 이미 존재합니다.');
EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('URL 데이터를 삽입합니다.');
INSERT INTO URL_INFO(ID_URL_INFO, URL_VALUE, URL_TYPE, URL_PREFIX)
VALUES(SEQ_ID_URL_INFO.NEXTVAL, v_page_url, v_url_type, v_url_prefix);
COMMIT;
END;
제 로그수집시 로직이
웹페이지 정보를 없으면 등록 하고, 있다면 그대로 활용하는 것인데
구현을 하다보니 궁금한 것이,
위와 같이 구현하면 데이터 없을때, 익셉션을 통해서 데이터를 저장하거든요.
1. 만약 데이터가 이미 존재할경우, 한번에 처리되도록하려면 어떻게 해야할까요 ?
2. 그리고 만약에 없더라도 위와같이 예외처리 부분이 호출안되고 다르게 구현하는 방법은 없을까요 ?