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
운영게시판
최근게시물
DB2 Q&A 1100 게시물 읽기
No. 1100
함수를 만들려고 하는데요...이렇게는 안된다고 하네요...
작성자
DB2초보
작성일
2006-09-12 14:23ⓒ
2006-09-12 18:08ⓜ
조회수
7,962

CREATE FUNCTION RIMSTAX.FDATECHK (IN_DATE VARCHAR(8))
RETURNS CHAR(1)
LANGUAGE SQL
SPECIFIC F_Date_Chk
BEGIN ATOMIC
     DECLARE v_Result CHAR(1);
     DECLARE v_Value CHAR(10);

     SET v_Value = SUBSTR(IN_DATE,1,4)||'-'||SUBSTR(IN_DATE,5,2)||'-'||SUBSTR(IN_DATE,7,2);

     SELECT DATE(v_Value)
     FROM SYSIBM.SYSDUMMY1;

     IF SQLSTATE = 22007 THEN
         SET v_Result = 'F';
     ELSE
         SET v_Result = 'T';
     END IF;
     RETURN v_Result;
END
위 함수에서 12번째 라인인 IF SQLSTATE = 22007 THEN 이 부분이 컴파일할때 에러나거든요...
목적은 8자리 문자를 받아서 날짜형식이 맞는지 볼려는 함수를 만들려고 합니다...

DATE(v_Value) 시 날짜형식에 맞지않으면 에러가 나는데...이걸 어떻게 처리해야할지...

아시는분은 답변좀 부탁드립나다.....항상 즐거운 하루되세요...

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

CREATE FUNCTION RIMSTAX.FDATECHK (IN_DATE VARCHAR(8))
RETURNS CHAR(1)
BEGIN ATOMIC
    DECLARE v_rt CHAR(1);
    DECLARE v_Value VARCHAR(100);

    SET v_Value = SUBSTR(IN_DATE,1,4)||'-'||SUBSTR(IN_DATE,5,2)||'-01';
    SET v_rt = (SELECT 'T'
                  FROM SYSIBM.SYSDUMMY1
                 where substr(IN_DATE,1,4) between '1900' and '2100'
                   and substr(IN_DATE,5,2) between '01' and '12'
                   and substr(IN_DATE,7,2) between '01' and substr(hex(date(v_Value)+1 month -1 day),7,2) );

    IF v_rt IS NULL THEN
        SET v_rt='F';
    END IF;

    RETURN v_rt;
END

DB20000I  The SQL command completed successfully.

> db2 "select RIMSTAX.FDATECHK('20060930') from sysibm.sysdummy1"

1
-
T

  1 record(s) selected.

> db2 "select RIMSTAX.FDATECHK('20060931') from sysibm.sysdummy1"

1
-
F

도님이 2006-09-13 15:17에 작성한 댓글입니다. Edit

도님 감사합니다...
덕분에 함수가 간결하게 되었네요...

DB2초보님이 2006-09-14 10:38에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1103클라이언트 OLEDB및 ODBC드라이버 설치본 만들기? [1]
5기
2006-09-14
7684
1102자동으로 증가되는 문자열 만들려면 어떻게 하나요? [2]
강성경
2006-09-14
9323
1101DB2에 오라클의 LEAD,LAG에 해당하는 함수가 있는지요? [1]
김강환
2006-09-13
10256
1100함수를 만들려고 하는데요...이렇게는 안된다고 하네요... [2]
DB2초보
2006-09-12
7962
1099수세리눅스 DB2설치 [1]
이종민
2006-09-12
6792
1098에러 확인 방법 [2]
에러
2006-09-11
7930
1096[질문] UNION ALL 사용시 결과가 이해가 안되네요. [2]
이준식
2006-09-06
7206
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다