Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

[SOLUCIONADO] Resultado repetido en funciones

Estas en el tema de Resultado repetido en funciones en el foro de Oracle en Foros del Web. Hola, hay algo que me pasa siempre que hago funciones y es que cuando las ejecuto me dan el resultado correcto pero me lo da ...
  #1 (permalink)  
Antiguo 19/06/2015, 10:00
Avatar de blueMuffin010  
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 8 años, 11 meses
Puntos: 0
Pregunta Resultado repetido en funciones

Hola, hay algo que me pasa siempre que hago funciones y es que cuando las ejecuto me dan el resultado correcto pero me lo da varias veces (una vez por cada entrada de la tabla)

Por ejemplo esta función:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION gasto_mensual(fecha DATE)
  2.   RETURN NUMERIC IS res NUMERIC;
  3.   BEGIN
  4.     SELECT SUM(importe) INTO res FROM factura WHERE EXTRACT(MONTH FROM factura.FECHA_FAC)=EXTRACT(MONTH FROM fecha) AND
  5.     EXTRACT(YEAR FROM factura.FECHA_FAC)=EXTRACT(YEAR FROM fecha);
  6.    
  7.    RETURN res;
  8.    END gasto_mensual;
  9. /
Cuando la pruebo con:

Código SQL:
Ver original
  1. SELECT gasto_mensual(to_date('10/01/19','DD/MM/RR')) FROM  FACTURA;
Me da como resultado :
Código SQL:
Ver original
  1. GASTO_MENSUAL(TO_DATE('10/01/19','DD/MM/RR'))
  2. ---------------------------------------------
  3.                                            15
  4.                                            15
  5.                                            15
  6.                                            15
  7.                                            15


No sé cómo hacer para que me salga un sólo resultado. Help!

Última edición por gnzsoloyo; 19/06/2015 a las 10:53
  #2 (permalink)  
Antiguo 19/06/2015, 16:46
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Resultado repetido en funciones

Ese es el funcionamiento correcto de las funciones, se aplican a cada registro resultante de la consulta. Si quieres saber el total de la tabla ejecuta la consulta directamente, no hay necesidad de crear una función.

Código SQL:
Ver original
  1. SELECT SUM(importe) FROM factura WHERE EXTRACT(MONTH FROM factura.FECHA_FAC)=EXTRACT(MONTH FROM fecha) AND
  2.     EXTRACT(YEAR FROM factura.FECHA_FAC)=EXTRACT(YEAR FROM fecha);

Y reemplaza la variable fecha por un valor concreto que quieras.

Saludos

Etiquetas: funciones, function, mysql, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:43.