INTERVAL
Publicado por KAR (12 intervenciones) el 15/10/2007 18:37:39
Hola!
Necesito que un procedure se ejecute cada determinado tiempo por el momento cada hora y que este deje de ejecutarse cuando se cumpla una condicion.
Estaba yo usando este codigo:
PROCEDURE SP_CICLO (PI_NUMERO in NUMBER,
PI_FORMATO IN VARCHAR2) IS
FINI TIMESTAMP(0):=TO_CHAR(sysdate, 'DD/MM/YYYY HH24:MI:SS');
FFIN TIMESTAMP(0);
BEGIN
EXECUTE IMMEDIATE 'SELECT TO_CHAR(SYSDATE + INTERVAL '''||PI_NUMERO||''' '||PI_FORMATO||', ''DD/MM/YYYY HH24:MI:SS'') FROM DUAL' INTO FFIN;
WHILE (FINI<FFIN) LOOP
FINI:=TO_CHAR(sysdate, 'DD/MM/YYYY HH24:MI:SS');
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR');
END SP_CICLO;
Pero a veces funcion y aveces no, no entiendo por que,
11:21:04 a.m. SQL> SET SERVEROUTPUT ON
11:21:17 a.m. SQL> EXEC SP_CICLO(1,'MINUTE');
PI_NUMERO:1
PI_FORMATO:MINUTE
FINI:15/10/07 11:17:00
SELECT TO_CHAR(SYSDATE + INTERVAL '1' MINUTE, 'DD/MM/YYYY HH24:MI:SS') FROM DUAL
FFIN:15/10/07 11:18:00
PL/SQL procedure successfully completed
Executed in 59.313 seconds
11:22:20 a.m. SQL> SET SERVEROUTPUT ON
11:22:30 a.m. SQL> EXEC SP_CICLO(1,'MINUTE');
PI_NUMERO:1
PI_FORMATO:MINUTE
FINI:15/10/07 11:18:13
SELECT TO_CHAR(SYSDATE + INTERVAL '1' MINUTE, 'DD/MM/YYYY HH24:MI:SS') FROM DUAL
FFIN:49/47/47 47:46:50
PL/SQL procedure successfully completed
Executed in 0 seconds
11:22:33 a.m. SQL>
Alguien podria darme alguna otra opcion?
Necesito que un procedure se ejecute cada determinado tiempo por el momento cada hora y que este deje de ejecutarse cuando se cumpla una condicion.
Estaba yo usando este codigo:
PROCEDURE SP_CICLO (PI_NUMERO in NUMBER,
PI_FORMATO IN VARCHAR2) IS
FINI TIMESTAMP(0):=TO_CHAR(sysdate, 'DD/MM/YYYY HH24:MI:SS');
FFIN TIMESTAMP(0);
BEGIN
EXECUTE IMMEDIATE 'SELECT TO_CHAR(SYSDATE + INTERVAL '''||PI_NUMERO||''' '||PI_FORMATO||', ''DD/MM/YYYY HH24:MI:SS'') FROM DUAL' INTO FFIN;
WHILE (FINI<FFIN) LOOP
FINI:=TO_CHAR(sysdate, 'DD/MM/YYYY HH24:MI:SS');
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR');
END SP_CICLO;
Pero a veces funcion y aveces no, no entiendo por que,
11:21:04 a.m. SQL> SET SERVEROUTPUT ON
11:21:17 a.m. SQL> EXEC SP_CICLO(1,'MINUTE');
PI_NUMERO:1
PI_FORMATO:MINUTE
FINI:15/10/07 11:17:00
SELECT TO_CHAR(SYSDATE + INTERVAL '1' MINUTE, 'DD/MM/YYYY HH24:MI:SS') FROM DUAL
FFIN:15/10/07 11:18:00
PL/SQL procedure successfully completed
Executed in 59.313 seconds
11:22:20 a.m. SQL> SET SERVEROUTPUT ON
11:22:30 a.m. SQL> EXEC SP_CICLO(1,'MINUTE');
PI_NUMERO:1
PI_FORMATO:MINUTE
FINI:15/10/07 11:18:13
SELECT TO_CHAR(SYSDATE + INTERVAL '1' MINUTE, 'DD/MM/YYYY HH24:MI:SS') FROM DUAL
FFIN:49/47/47 47:46:50
PL/SQL procedure successfully completed
Executed in 0 seconds
11:22:33 a.m. SQL>
Alguien podria darme alguna otra opcion?
Valora esta pregunta


0