DB 연동 INSERT 예문
Agent 를 올리고 나면 남는 일은 INSERT 한 줄입니다. 단문·예약·장문·포토 네 경우의 예문과, MSG_TYPE·REQ_DATE·CONT_SEQ 세 값만 알면 되는 이유를 정리했습니다. DB 별 차이는 시퀀스와 현재 시각 함수뿐입니다.
테이블은 둘, 기억할 값은 셋입니다
XDB Agent 를 실행하면 MSG_DATA 와 MMS_CONTENTS_INFO 두 테이블이 생깁니다. 단문은 MSG_DATA 한 줄이면 끝나고, 장문·포토는 내용을 MMS_CONTENTS_INFO 에 먼저 넣은 뒤 그 번호(CONT_SEQ)를 MSG_DATA 에 적어 줍니다. 나머지는 세 값으로 갈립니다. MSG_TYPE 이 4 면 단문, 6 이면 장문·포토. REQ_DATE 가 현재 시각이면 즉시, 미래 시각이면 예약. FILE_CNT 가 0 이면 장문, 1 이면 이미지만, 2 면 글과 이미지입니다. CUR_STATE 는 0 으로 넣습니다.

예문을 그대로 넣어 첫 문자를 보내 보세요
연동 계정과 Agent 가 준비됐다면 아래 예문의 수신번호·발신번호만 바꿔 넣으면 됩니다.
테스트 문자 10건으로 확인한 뒤 실서비스에 붙이세요.
√ 가입 무료 √ 2000년부터 운영 √ 누적 발송 3억 건 이상
경우별 예문 (Oracle 기준)
MS-SQL 과 MySQL 은 아래에 따로 있습니다. 컬럼 하나하나의 뜻은 XDB 매뉴얼에 있고, 여기서는 샘플 주석에 적힌 것만 옮겼습니다.
Oracle
/* 단문 -- 즉시전송 (REQ_DATE : 현재시간, MSG_TYPE : 4, SMS_TXT : 필수) */
INSERT INTO MSG_DATA(MSG_SEQ, CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE)
VALUES(MSG_DATA_SEQ.NEXTVAL, 0, SYSDATE, '수신번호', '발신번호', 'Test SMS입니다', 4);
/* 단문 -- 예약전송 (REQ_DATE : 미래시간) */
INSERT INTO MSG_DATA(MSG_SEQ, CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE)
VALUES(MSG_DATA_SEQ.NEXTVAL, 0, TO_DATE('2029-12-31 10:00:00','YYYY-MM-DD HH24:MI:SS'), '수신번호', '발신번호', '예약 SMS입니다', 4);
/* 장문 (FILE_CNT : 0, MSG_TYPE : 6, CONT_SEQ : 필수) */
INSERT INTO MMS_CONTENTS_INFO(CONT_SEQ, FILE_CNT, MMS_SUBJECT, MMS_BODY)
VALUES(MMS_CONTENTS_INFO_SEQ.NEXTVAL, 0, 'LMS 제목', 'LMS 내용');
INSERT INTO MSG_DATA(MSG_SEQ, CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE, CONT_SEQ)
VALUES(MSG_DATA_SEQ.NEXTVAL, 0, SYSDATE, '수신번호', '발신번호', '', 6, MMS_CONTENTS_INFO_SEQ.CURRVAL);
/* 포토 -- 텍스트+이미지 (FILE_CNT = 2, MSG_TYPE : 6, CONT_SEQ : 필수) */
INSERT INTO MMS_CONTENTS_INFO(CONT_SEQ, FILE_CNT, MMS_SUBJECT, MMS_BODY, FILE_TYPE1, FILE_NAME1, SERVICE_DEP1)
VALUES(MMS_CONTENTS_INFO_SEQ.NEXTVAL, 2, 'MMS 제목', 'MMS 내용', 'IMG', 'C:/XDB2/attach/01.jpg', 'ALL');
INSERT INTO MSG_DATA(MSG_SEQ, CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE, CONT_SEQ)
VALUES(MSG_DATA_SEQ.NEXTVAL, 0, SYSDATE, '수신번호', '발신번호', '', 6, MMS_CONTENTS_INFO_SEQ.CURRVAL);
예약 발송은 REQ_DATE 에 미래 시각을 넣는 것이 전부입니다. 즉시 발송과 같은 INSERT 이고, Agent 가 그 시각이 되면 가져갑니다.
세 DB 가 다른 곳은 두 군데뿐입니다
시퀀스(번호 매기기)와 현재 시각 함수. 나머지 컬럼과 값은 같습니다.
| Oracle | MS-SQL | MySQL | |
|---|---|---|---|
| MSG_SEQ / CONT_SEQ 번호 | MSG_DATA_SEQ.NEXTVAL · MMS_CONTENTS_INFO_SEQ.NEXTVAL 을 직접 넣음 | 자동 증가 · INSERT 에서 생략 | 자동 증가 · INSERT 에서 생략 |
| 현재 시각 (즉시 발송) | SYSDATE | GETDATE() | NOW() |
| 장문·포토의 CONT_SEQ 연결 | MMS_CONTENTS_INFO_SEQ.CURRVAL | @@IDENTITY | LAST_INSERT_ID() |
| 첨부 이미지 경로 예 | C:/XDB2/attach/01.jpg | C:/XDB2/attach/01.jpg | /home/xonda/xdb2/attach/01.jpg (Linux) |
| MSG_TYPE · FILE_CNT · CUR_STATE | 세 DB 모두 같음 : 단문 4 · 장문/포토 6 · 장문 0 / 이미지 1 / 글+이미지 2 · CUR_STATE 0 | 같음 | 같음 |
MS-SQL · MySQL 예문은 바로 아래에 있습니다
시퀀스와 시각 함수만 바꾸면 됩니다. 막히면 Agent 로그와 방화벽·잔액부터 보세요.
예문이 안 맞으면 전화로 같이 보겠습니다 02-2646-7280평일 09:00~17:30 (점심 12:00~13:00)
MS-SQL · MySQL 예문
MS-SQL
/* 단문 -- 즉시전송 */ INSERT INTO MSG_DATA(CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE) VALUES(0, GETDATE(), '수신번호', '발신번호', 'Test SMS입니다', 4); /* 단문 -- 예약전송 */ INSERT INTO MSG_DATA(CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE) VALUES(0, '2029-12-31 10:00:00', '수신번호', '발신번호', '예약 SMS입니다', 4); /* 장문 */ INSERT INTO MMS_CONTENTS_INFO(FILE_CNT, MMS_SUBJECT, MMS_BODY) VALUES(0, 'LMS 제목', 'LMS 내용'); INSERT INTO MSG_DATA(CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE, CONT_SEQ) VALUES(0, GETDATE(), '수신번호', '발신번호', '', 6, @@IDENTITY); /* 포토 -- 텍스트+이미지 */ INSERT INTO MMS_CONTENTS_INFO(FILE_CNT, MMS_SUBJECT, MMS_BODY, FILE_TYPE1, FILE_NAME1, SERVICE_DEP1) VALUES(2, 'MMS 제목', 'MMS 내용', 'IMG', 'C:/XDB2/attach/01.jpg', 'ALL'); INSERT INTO MSG_DATA(CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE, CONT_SEQ) VALUES(0, GETDATE(), '수신번호', '발신번호', '', 6, @@IDENTITY);
MySQL
/* 단문 -- 즉시전송 */ INSERT INTO MSG_DATA(CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE) VALUES(0, NOW(), '수신번호', '발신번호', 'Test SMS입니다', 4); /* 단문 -- 예약전송 */ INSERT INTO MSG_DATA(CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE) VALUES(0, '2029-12-31 10:00:00', '수신번호', '발신번호', '예약 SMS입니다', 4); /* 장문 */ INSERT INTO MMS_CONTENTS_INFO(FILE_CNT, MMS_SUBJECT, MMS_BODY) VALUES(0, 'LMS 제목', 'LMS 내용'); INSERT INTO MSG_DATA(CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE, CONT_SEQ) VALUES(0, NOW(), '수신번호', '발신번호', '', 6, LAST_INSERT_ID()); /* 포토 -- 텍스트+이미지 */ INSERT INTO MMS_CONTENTS_INFO(FILE_CNT, MMS_SUBJECT, MMS_BODY, FILE_TYPE1, FILE_NAME1, SERVICE_DEP1) VALUES(2, 'MMS 제목', 'MMS 내용', 'IMG', '/home/xonda/xdb2/attach/01.jpg', 'ALL'); INSERT INTO MSG_DATA(CUR_STATE, REQ_DATE, CALL_TO, CALL_FROM, SMS_TXT, MSG_TYPE, CONT_SEQ) VALUES(0, NOW(), '수신번호', '발신번호', '', 6, LAST_INSERT_ID());
INSERT 하기 전에 확인할 5가지
- CALL_FROM(발신번호)은 사전등록된 번호여야 합니다. 등록되지 않은 번호로 실패가 반복되면 계정이 차단될 수 있습니다
- MSG_TYPE 4 에는 SMS_TXT 가 필수이고, 6 에는 CONT_SEQ 가 필수입니다. 6 을 넣으면서 SMS_TXT 만 채우면 내용 없는 문자가 됩니다
- 장문·포토는 MMS_CONTENTS_INFO 를 먼저 넣고, 같은 트랜잭션 안에서 그 번호를 MSG_DATA 에 넘깁니다. 순서가 바뀌면 CONT_SEQ 가 비어 실패합니다
- REQ_DATE 는 서버 시각 기준입니다. 예약을 걸 때 DB 서버의 시간대가 우리 업무 시간과 같은지 한 번 확인하세요
- 첨부 파일은 Agent 가 읽는 서버 경로에 두고, Agent 실행 계정에 읽기 권한이 있어야 합니다
넣은 뒤에 보는 순서

- 1 같은 테이블을 다시 조회합니다 : Agent 가 처리 결과를 그 줄에 업데이트합니다. 값이 바뀌지 않으면 Agent 가 가져가지 못한 것입니다
- 2 Agent 로그를 봅니다 : 테이블이 안 생겼으면 DB 접속 실패, 넣었는데 안 나가면 방화벽이나 잔액입니다
- 3 홈페이지 전송결과에서 대조합니다 : 전송관리 ▶ 전송결과 ▶ 통합내역에 같은 건이 보여야 합니다
- 4 예약 건은 REQ_DATE 가 지난 뒤 봅니다 : 미래 시각이면 그때까지 그대로 있는 것이 정상입니다
- 5 실서비스 전에 내 번호로 네 경우(단문·예약·장문·포토)를 한 번씩 보내 봅니다 : 테스트 문자 10건이면 충분합니다
자주 묻는 질문 Q&A
-
Q1: 컬럼이 더 있는데 다 채워야 하나요?
A1: 예문에 적힌 컬럼만 넣어도 발송됩니다. 나머지 컬럼의 뜻과 쓰임은 Agent 와 함께 받는 XDB 매뉴얼에 있습니다. 결과가 어느 컬럼에 어떻게 업데이트되는지도 매뉴얼을 보세요.
-
Q2: 한 번에 여러 명에게 보내려면요?
A2: 받는 사람 수만큼 MSG_DATA 에 줄을 넣습니다. 장문·포토는 내용이 같다면 MMS_CONTENTS_INFO 한 줄에 여러 MSG_DATA 줄이 같은 CONT_SEQ 를 가리켜도 됩니다.
-
Q3: 예약을 취소하거나 시각을 바꾸려면요?
A3: Agent 가 가져가기 전이라면 그 줄을 지우거나 REQ_DATE 를 고치면 됩니다. 이미 가져간 뒤의 처리는 매뉴얼의 상태값 설명을 따르세요. 확실하지 않으면 02-2646-7280으로 물어보시는 편이 빠릅니다.
-
Q4: Oracle 예약 예문에 REQ_DATE 가 두 번 나오던데요?
A4: 사이트 샘플의 표기 오류로 보입니다. 이 글의 예문은 MS-SQL·MySQL 샘플과 같은 형태로 REQ_DATE 를 한 번만 적었고, Oracle 에서는 문자열을 TO_DATE 로 바꿔 넣도록 했습니다.
-
Q5: 요금은 어떻게 계산되나요?
A5: 연동 회원 전용 요금제입니다. 단문은 49,000원 상품 17.5원부터 700,000원 상품 14원까지, 장문은 45원부터 42원까지, 포토는 250원부터 230원까지 상품에 따라 단가가 내려갑니다(부가세 별도). MSG_TYPE 과 FILE_CNT 에 따라 단문·장문·포토 단가가 각각 적용됩니다.
INSERT 한 줄이면 우리 시스템이 문자를 보냅니다
연동 계정과 Agent 가 아직이면 설치 순서 글부터, 준비됐다면 위 예문으로 오늘 첫 문자를 보내 보세요.
전화 상담 02-2646-7280평일 09:00~17:30 (점심 12:00~13:00)
※ 포토는 연동 요금제에서 건당 230~250원(부가세 별도)이라 단문·장문과 단가가 크게 다릅니다.