Zerar Sequencial Na Virada de Ano

Oracle

06/03/2006

Gostaria de saber se é possível configurar um seqüencial para ele zerar numa data especifica, por exemplo: dia 01/01/yyyy independente do ano. E como seria esse comando SQL? :yeah:


Desde já agradeço


Gabrielherdt

Gabrielherdt

Curtidas 0

Respostas

Motta

Motta

06/03/2006

Por sequence não, teria de usar uma solução envolvendo tabela/function.


GOSTEI 0
Rosterne

Rosterne

06/03/2006

Pra zerar uma sequence vc terá que dropa-la e depois cria-la novamente.

Fiz da seguinte forma:

Criei uma procedure q checa a data e caso tenha mudado de ano dropa e recria novamente a sequence:


CREATE OR REPLACE PROCEDURE ZERA AS
cur integer;
rc integer;
d varchar2(10);
BEGIN
select to_char(sysdate, ´dd-MON´) into d from dual;
if d = ´01-JAN´ then
cur := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(cur, ´drop sequence sq´, DBMS_SQL.NATIVE);
rc := DBMS_SQL.EXECUTE(cur);
DBMS_SQL.CLOSE_CURSOR(cur);
cur := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(cur, ´create sequence sq start with 1 increment by 1´, DBMS_SQL.N
ATIVE);
rc := DBMS_SQL.EXECUTE(cur);
DBMS_SQL.CLOSE_CURSOR(cur);
end if;
END;
/

e depois criei um job q rodará todo dia e executará a procedure.

variable v number;

exec DBMS_JOB.SUBMIT(:v,´zera;´,SYSDATE, ´sysdate + 1440/1440´);

Espero ter ajudado.


GOSTEI 0
POSTAR