[Pgsql-ayuda] años bisiestos........

GUSTAVO MARTIN OCAMPO gocampo79@hotmail.com
Wed, 10 Dec 2003 15:59:13 +0000


Hola lista, tengo una funcion de la forma.......

CREATE OR REPLACE FUNCTION plpg_detalle_mensual(text, text) RETURNS SETOF 
basemovim AS '
DECLARE
	newrow basemovim%ROWTYPE;
	mes ALIAS FOR $1;
	anio ALIAS FOR $2;
BEGIN
IF mes = ''Enero'' OR mes = ''enero'' OR mes = ''ENERO'' THEN
	FOR newrow IN Select basemovibanco.fecha_vencimiento, 
sum(basemovibanco.importe) as

total, tabdebicredi.descripcion as debicredi from (basemovibanco inner join 
tabdebicredi on

basemovibanco.id_debicredi = tabdebicredi.id_debicredi) where 
basemovibanco.fecha_vencimiento

between cast(''01-01-'' || anio as date) and cast(''31-01-'' || anio as 
date) group by

basemovibanco.fecha_vencimiento, debicredi order by 
basemovibanco.fecha_vencimiento, debicredi

desc LOOP
	RETURN NEXT newrow;
	END LOOP;
END IF;
IF mes = ''Febrero'' OR mes = ''febrero'' OR mes = ''FEBRERO'' THEN
	FOR newrow IN Select basemovibanco.fecha_vencimiento, 
sum(basemovibanco.importe) as

total, tabdebicredi.descripcion as debicredi from (basemovibanco inner join 
tabdebicredi on

basemovibanco.id_debicredi = tabdebicredi.id_debicredi) where 
basemovibanco.fecha_vencimiento

between cast(''01-02-'' || anio as date) and cast(''28-02-'' || anio as 
date) group by

basemovibanco.fecha_vencimiento, debicredi order by 
basemovibanco.fecha_vencimiento, debicredi

desc LOOP
	RETURN NEXT newrow;
	END LOOP;
END IF;
..................(continua para los otros meses)
...
RETURN;
END;
' language plpgsql;
..o sea, los parametros que le paso son el mes y el año, ahora, mi problema 
es con los años bisiestos, existe alguna funcion que me devuelva algun valor 
booleano diciendome si un año es bisiesto? otra idea que se me ocurre es 
crear otra funcion que, justamente, me diga si un año es bisiesto o no y 
llamar a esta funcion desde la descripta mas arriba, se puede hacer esto?
Otra pregunta que tengo es si hay manera de resumir un poco el codigo de 
esta funcion porque hacer un if por cada mes se me hace grande la funcion.
Desde ya gracias, y acepto todo tipo de sugerencias.-

_________________________________________________________________
Charla con tus amigos en línea mediante MSN Messenger: 
http://messenger.latam.msn.com/