10초 단위로 구문을 반복해서 실행하고 출력하고 싶습니다. 0

by Thomas [PL/SQL] [2022.03.17 21:05:52]


DECLARE
    V_LOOP_COUNT NUMBER := 0;
    V_SECOND     NUMBER;
    V_DATE       DATE;
BEGIN
    WHILE 1 = 1 LOOP
        BEGIN
            SELECT MOD(TO_CHAR(SYSDATE, 'SS'), 10) INTO V_SECOND FROM DUAL;
        END;

        BEGIN
            IF V_SECOND = 0 THEN
                SELECT SYSDATE INTO V_DATE FROM DUAL;
                V_LOOP_COUNT := V_LOOP_COUNT + 1;
                DBMS_OUTPUT.PUT_LINE('DATE TIME:' || V_DATE);
                DBMS_OUTPUT.PUT_LINE('V_LOOP_COUNT:' || V_LOOP_COUNT);
                
                IF V_LOOP_COUNT = 10 THEN
                    RETURN;
                END IF;
            END IF;
        END;
    END LOOP;
END;

위와 같이 작성을 했는데요.

결과는 10초 단위가 아니고 한방에 다 출력되네요.

10초 단위로 나오게 할 수 없을까요?

by 마농 [2022.03.18 08:40:31]

end loop 바로 앞에 다음 구문을 추가하세요.
DBMS_LOCK.SLEEP(1);  -- 1초 지연
권한이 필요할 수도 있습니다.
GRANT EXECUTE ON DBMS_LOCK TO scott;  -- sys user 에서 권한 부여


by Thomas [2022.03.21 09:45:32]

답변 감사합니다.

정상적으로 지연되어 출력되지만 모든 시간이 끝난뒤인 100초 뒤에 한방에 출력되네요. 10초마다 SQL Client상의 Output 창에 출력할 방법은 없을까요?

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