database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39335 게시물 읽기
No. 39335
TO_CHAR()함수 문제
작성자
유상구(neil76)
작성일
2012-03-08 12:27
조회수
5,953

안녕하세요.

TO_CHAR(SYSDATE, 'HH24MISS')로 해서 시간을 구해서 테이블에  INSERT하는 Procedure가 있습니다.

만약 밤 12시 5분 10초에  위에서 얘기한 Procedure를 실행시키면내용으로 하면 해당컬럼에 000510 이 들어가야 하는데

실제 들어간 데이터는 510 만 들어갑니다.

해당 컬럼은 VARCHAR2(6)으로 되어 있구요.

아래는 Procedure의 일부입니다.

=================================================================================

IN_STR                                VARCHAR2(2000);
V_BACKUP_DATE             VARCHAR2(8);
V_BACKUP_HMS               VARCHAR2(6);
       
BEGIN
  ---* 현재 년월일, 시분초
          V_BACKUP_DATE := TO_CHAR(SYSDATE, 'YYYYMMDD');
          V_BACKUP_HMS  := TO_CHAR(SYSDATE, 'HH24MISS');
          
            IN_STR := ' INSERT INTO CALL_LIST_BACKUP ( ';
            IN_STR := IN_STR || ' RECORD_ID, CONTACT_INFO, CONTACT_INFO_TYPE, RECORD_TYPE, RECORD_STATUS, CALL_RESULT,

                                ATTEMPT, DIAL_SCHED_TIME, CALL_TIME, DAILY_FROM, ' ;

            IN_STR := IN_STR || ' SELECT ';
            IN_STR := IN_STR || ' RECORD_ID, CONTACT_INFO, CONTACT_INFO_TYPE, RECORD_TYPE, RECORD_STATUS, CALL_RESULT,

                               ATTEMPT, DIAL_SCHED_TIME, CALL_TIME, DAILY_FROM, ' ;
            IN_STR := IN_STR || ' DAILY_TILL, TZ_DBID, CAMPAIGN_ID, AGENT_ID, CHAIN_ID, CHAIN_N, GROUP_ID, APP_ID, TREATMENTS, ' ;
            IN_STR := IN_STR || ' SWITCH_ID, CALL_KND, TEL_NO, CAMPN_KND, CUST_VCD, TABLE_NAME, TYPE_KND, REG_DATE, REG_HMS, ' ;
            IN_STR := IN_STR || V_BACKUP_DATE || ', ' || V_BACKUP_HMS ;
            IN_STR := IN_STR || ' FROM ' || V_CALLING_LIST_NAME ;

조언 부탁드립니다.

 

이 글에 대한 댓글이 총 1건 있습니다.

실제로 실행은 안해봤지만 IN_STR을  EXECUTE IMMEDIATE 이걸로든 어쨋든 dynamic 실행으로 하시려는 것 같아보이는데요... V_BACKUP_HMS 변수에 000510이라는 것이 싱글 따옴표로 되어 있지 않아서 아무래도 510만 insert 될것 같아 보이네요 제 눈에는..

이렇게 비교해보심이.. 도움이 될수 있겠네용

  in_str := '';

  in_str := in_str || ' INSERT INTO CALL_LIST_BACKUP CALL_TIME ';

  in_str := in_str || ' SELECT ' || V_BACKUP_HMS || ' from dual';

  in_str := in_str || ' ;';

  dbms_output.put_line(in_str);

 

  in_str := '';

  in_str := in_str || ' INSERT INTO CALL_LIST_BACKUP CALL_TIME ';

  in_str := in_str || ' SELECT ''' || V_BACKUP_HMS || ''' from dual';

  in_str := in_str || ' ;';

  dbms_output.put_line(in_str);

 

 

김선엽(sunyoupk)님이 2012-03-08 13:38에 작성한 댓글입니다.
이 댓글은 2012-03-08 13:48에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
39341이런거 가능한가요? [4]
나재호
2012-03-13
5064
39338Jeus에서 Clob가 4000바이트 이하로 밖에안들어갑니다..
김민호
2012-03-10
5055
39337오라클 shutdown immediate 반응 없음 [1]
쿼리OTL
2012-03-10
8827
39335TO_CHAR()함수 문제 [1]
유상구
2012-03-08
5953
39334프로시져에서 데이터가 안들어갑니다. [2]
슬라임
2012-03-07
5280
39333이전 날짜의 데이터 가져오려고 할때 [1]
왕태봉
2012-03-07
4208
39332date칼럼인데 시분초가 나오질 않습니다. [2]
qa
2012-03-07
4399
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다