CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] )
RETURNS rettype
{ LANGUAGE langname
| IMMUTABLE | STABLE | VOLATILE
| CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
| [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY DEFINER
| AS 'definition'
| AS 'obj_file', 'link_symbol'
} ...
[ WITH ( attribute [, ...] ) ]
Ejemplo:
CREATE OR REPLACE FUNCTION EsBisiesto (DATE)
RETURNS BOOLEAN AS '
DECLARE
fecha ALIAS FOR $1;
iAnno INTEGER;
BEGIN
-- Extrae el año de la fecha
iAnno= EXTRACT(YEAR FROM fecha);
IF (((iAnno % 4 = 0) AND (iAnno % 100 <> 0)) OR (iAnno % 400 = 0)) THEN
-- Febrero es bisiesto
RETURN(''t'');
END IF;
-- Febrero no es bisiesto
RETURN(''f'');
END;
' LANGUAGE plpgsql;
Saludos.