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

función

Estas en el tema de función en el foro de Oracle en Foros del Web. hola de nuevo he creado esta funcion que me debe devolver el asistente más joven de la empresa @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE ...
  #1 (permalink)  
Antiguo 17/05/2014, 23:24
 
Fecha de Ingreso: mayo-2014
Mensajes: 12
Antigüedad: 9 años, 11 meses
Puntos: 0
función

hola de nuevo he creado esta funcion que me debe devolver el asistente más joven de la empresa
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION persona (empresa1 IN asistente.empresa%TYPE)
  2. RETURN VARCHAR2
  3. IS
  4.     v_nombre asistente.nombre%TYPE;
  5. BEGIN
  6.     SELECT nombre INTO v_nombre
  7.     FROM asistente WHERE fechanac=(SELECT MIN(fechanac)FROM asistente)AND empresa=empresa1;
  8.     RETURN (v_nombre);
  9. EXCEPTION
  10.     WHEN NO_DATA_FOUND THEN
  11.         RETURN(NULL);
  12. END persona;
se crea perfectamente pero al ejecutarls no me devuelve ningún valor

Última edición por gnzsoloyo; 18/05/2014 a las 07:10
  #2 (permalink)  
Antiguo 18/05/2014, 05:17
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: función

Se me ocurren dos cosas :

1-) Que no haya ninguna ocurrencia y que se te vaya por el no data found ( ¿ no tratas el too many rows ? )
2-) Que haya ocurrencias de este tipo : 14-01-1985 22:13:00 y 14-01-1985 02:13:00. En este caso, prueba esto :

TRUNC( fechanac)=(select min(TRUNC(fechanac))from asistente)and empresa=empresa1;
  #3 (permalink)  
Antiguo 18/05/2014, 07:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: función

Una observación: Ese MIN() no devuelve el más joven de los asistentes, sino el de mayor edad. ¿Te diste cuenta?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 18/05/2014, 21:49
 
Fecha de Ingreso: mayo-2014
Mensajes: 12
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: función

efectivamente devuelve el de mayor edad, habría que cambiarlo por max, sigo con el problema de que no me devuelve nada al ejecutarlo nosé que puede estar pasando si coloco la consulta cambiando empresa1 con el nombre de una empresa,la consulta funciona perfecta, asi que tendráque se un fallo en la estrutura de la función, o lo mismo es que no la ejecuto correctamente porque me se ha ocurrido meterla en un select y ha funcionado pero me da una lista larguísima con el mismo nombre

Última edición por cocode; 18/05/2014 a las 21:55
  #5 (permalink)  
Antiguo 22/05/2014, 02:22
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: función

postea el CREATE TABLE y unos cuantos INSERTS y lo miro

Etiquetas: select
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 09:00.