함수 질문좀 드립니다. 0 1 2,899

by 공은영랄라 [2016.02.02 19:31:37]


create or replace FUNCTION          Route_Tran
(
    vRouterSeq IN router.seq%TYPE,
    vSeq IN tran.seq%TYPE,
    vSender IN tran.sender%TYPE,
    vReceiver IN tran.receiver%TYPE,
    vMsg IN tran.msg%TYPE,
    vUrl IN tran.url%TYPE,
    vPriority in users.priority%TYPE
)
RETURN Integer
IS
    vRet INTEGER;
BEGIN

    -- SKT SMS
    IF vRouterSeq = 10 THEN
        INSERT INTO TELINK_SMS
        (CMP_MSG_ID, WRT_DTTM, SND_DTTM, SND_PHN_ID, RCV_PHN_ID, CALLBACK, SND_MSG, SMS_ST, RSLT_VAL)
        VALUES(LPAD(vSeq,20,'0'), TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'), TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'),'', vReceiver, vSender,  vMsg, '0', 99);

    -- KT SMS
    ELSIF vRouterSeq = 20 THEN
        INSERT INTO SDK_SMS_SEND
        (MSG_ID, USER_ID, SMS_MSG, CALLBACK_URL, NOW_DATE, SEND_DATE, CALLBACK, DEST_COUNT, DEST_INFO)
        VALUES(vSeq, 'tongil0234', vMsg, vUrl, to_char(sysdate,'yyyymmddhh24miss'), to_char(sysdate,'yyyymmddhh24miss'), vSender, 1, '^'||vReceiver);

    -- 미설정
    ELSE
        vRet := 0;

    END IF;

    RETURN 1;

END;

 

예약테이블 => 전송테이블 => 각통신사 SMS테이블의 순서로 순차적으로 입력되는 구조입니다.

위 함수는 전송 테이블에서 각 통신사 SMS 테이블(SK와 KT)로 인서트 되는 부분 인데요.

에이전트가 두개 입니다. ( SK 텔링크와 , KT 크로샷) 헌데 두개임에도 불구하고,

SK 테이블로 인서트 되는 동안 KT 테이블로 인서트 되지 않고 멈추어 버립니다.

SK 테이블로 인서트 되는 중 약간의 공백(ex> 15분예약 16분예약 20분예약(4분공백)) 일때 KT 테이블로 인서트가 시작이 되고 SK의 예약시간이 다가오면 다시 KT가 멈추고 SK가 먼저 발송이 되고 난 후에야 KT가 발송이 되는데요.

제가 찾은 부분은 저부분밖에 못찾겠는데.. 혹시 해당 함수부분 이상 있는지 알 수 있을까요?

by 창조의날개 [2016.02.03 09:05:48]

FUNCTION을 하나만 만들어서 돌리고 있어서 그러거 같은데요.

 

그럼 한가지 일을 하고 있으면 다른 건 함께 할 수 없지 않을가요?

 

해당 FUNCTION을 sk와 kt로 분리해서 각각 만들고..

 

로직으로 vRouterSeq = 10 일때와 vRouterSeq = 20 일때는 분리해서 각각 호출하면 동시에 두개의 일을 할 수 있지 않을가요?

 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입