Oracle - Regenerar una secuencia

 
Vista:

Regenerar una secuencia

Publicado por Daniel R (22 intervenciones) el 13/11/2002 16:53:11
Hey, tengo una aplicación que genera una secuencia pero resulta que
como parte de los requerimientos del usuario esta debe reiniciarse cada principio de mes en 1 nuevamente, yo escribi este procedimiento que efectivamente reinicia la secuencia a 1 pero cuando quiero seguir grabando mas documentos me sigue poniendo el 1 y no el 2 que seria el siguiente, a continuación pongo el código y talves me puedan dar una mano, gracias:

FUNCTION secuencia RETURN number IS
contador number(19);
correlativo number(19);
BEGIN
contador := 0;
:GLOBAL.valoractual := 1;
if :GLOBAL.correlativo > 0 then
if correlativo is not null then
contador := :GLOBAL.correlativo + 1;
else
:GLOBAL.valorsiguiente := :GLOBAL.correlativo + 1;
contador := :GLOBAL.valorsiguiente;
end if;
else
:GLOBAL.valorsiguiente := :GLOBAL.correlativo + 1;
contador := :GLOBAL.valorsiguiente;
end if;
return(contador);
END;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Regenerar una secuencia

Publicado por Gilberto (119 intervenciones) el 13/11/2002 22:20:10
Como consejo revisa bien que los parámetros que le estas dando a la funcion (variables globales) no sean de la forma sino que los vaya a buscar de la tabla. Porque por ejemplo, cuando estas grabando y el campo correlativo lo sacas de la forma cuando pasas ese valor a la funcion realmente tiene 0 y ella le agrega el valor de 1 y asi lo va a hacer siempre por no llevar ningún valor, de lo contrario si sacas el max del correlativo y con ese dato lo operas ahi si te lo irá incrementando. Toma en cuenta esta pequeña nota. Exitos.

Gilberto H.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar