2013-05-23 2 views
1

우리 회사에서 DB2를 사용하고 있으며 5 분마다 SQL 파일 세트를 실행하는 스케줄링 프로그램 (내가 액세스 할 수 없음)이 있습니다. 나는 비록 SQL 문에 대한 제어 권한을 가지고있다.SQL : DB2가 특정 시간 내에 "DB2"를 실행하는 경우

파일 내의 SQL 중 하나는 하루에 두 번만 실행해야하며 실제로는 무겁다. 따라서 5 분마다 실행하면 시스템이 종료됩니다.

는 따라서 내 질문/상황은 규정 된 시간 내에, 다음을 실행하는 경우가 확인하도록
  • 는 SQL을 수정하는 영리한 방법이있다. (즉 특정 시간 바깥에있는 경우 논리를 실행하지 마십시오)?
  • 순수한 SQL로 스크립트 또는 if 루프를 넣을 수 없습니다. 따라서 수정 은 DML (Data Manipulation Language) 문 내에 있어야합니다.
  • 하드 코딩 된 시간 매개 변수를 추가하기 만하면 DB2가 논리를 실행 한 다음 시간을 확인합니다. 그 외에는 시간 매개 변수 사이에 하드 코드 된 것을 SQL에 두는 것은 매우 간단합니다. 사전에

덕분에이 같은

답변

2

보십시오 뭔가. 현재 타임 스탬프를 먼저 얻고 쿼리를 크로스 - 조인합니다. 옵티마이 저는 "A"에 행이없고 "B"이 실행되지 않을 정도로 똑똑합니다.

SELECT B.* 
FROM (SELECT CURRENT TIME AS CTIME FROM SYSIBM.SYSDUMMY1) A 
JOIN (...your_query...) B 
    ON 1=1 
WHERE A.CTIME BETWEEN '08:00:00' AND '09:00:00' 
+0

감사합니다. 완벽한 대답. – diaryfolio

+0

죄송합니다. 묻는 것을 잊어 버렸습니다. Where 절을 수행하기 전에 (... your_query ...)가 먼저 실행됩니까? – diaryfolio

+0

@diaryfolio는 테스트하지 않았습니다. 나는 z/OS 10 및 LUW 9.7 용 DB2에서 시험해 보았습니다. – bhamby