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초 단위로 나오게 할 수 없을까요?
end loop 바로 앞에 다음 구문을 추가하세요.
DBMS_LOCK.SLEEP(1); -- 1초 지연
권한이 필요할 수도 있습니다.
GRANT EXECUTE ON DBMS_LOCK TO scott; -- sys user 에서 권한 부여
답변 감사합니다.
정상적으로 지연되어 출력되지만 모든 시간이 끝난뒤인 100초 뒤에 한방에 출력되네요. 10초마다 SQL Client상의 Output 창에 출력할 방법은 없을까요?