Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/07/2009, 13:12
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Problema con datos reales

Edwinsp

Mira lo que he probado.

Código sql:
Ver original
  1. -- Function: pa_grabardetalle(_codcab bpchar, _codigo bpchar[], _aimporte real[])
  2.  
  3. -- DROP FUNCTION pa_grabardetalle(_codcab bpchar, _codigo bpchar[], _aimporte real[]);
  4.  
  5. CREATE OR REPLACE FUNCTION pa_grabardetalle(_codcab bpchar, _codigo bpchar[], _aimporte REAL[])
  6.   RETURNS REAL AS
  7. $BODY$
  8. BEGIN
  9. FOR i IN array_lower(_aimporte,1) .. array_upper(_aimporte,1) LOOP
  10. INSERT INTO detalle(codcab,codigo,importe1,importe2)
  11. VALUES(_codcab,_codigo[i],_aimporte[i][1],_aimporte[i][2]);
  12. END LOOP;
  13. IF (SELECT SUM(importe1)-SUM(importe2) FROM detalle WHERE codcab=_codcab)<>0 THEN
  14. --RAISE EXCEPTION 'las sumas no coinciden..!';
  15. RETURN (SELECT SUM(importe1)-SUM(importe2) FROM detalle WHERE codcab=_codcab)::REAL;
  16. END IF;
  17. RETURN 1;
  18. END;
  19. $BODY$
  20.   LANGUAGE 'plpgsql' VOLATILE;

Esto me retorna el valor que deberia ser 0. Para mi sorpresa el valor el valor retornado es muy cercano a 0.
Lo extraño realmente, es que si te fijas en la tabla detalle, las inserciones se hacen correctamente.

Sigo buscando la razón de este fenomeno.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming