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

Crear funciones en mysql

Estas en el tema de Crear funciones en mysql en el foro de Mysql en Foros del Web. Tengo el siguiente ejercicio: crear una función que retorne todas las reservas de un rango de fechas dado, que se hicieron efectivas tengo el siguiente ...
  #1 (permalink)  
Antiguo 22/05/2012, 23:12
 
Fecha de Ingreso: mayo-2012
Ubicación: medellin
Mensajes: 10
Antigüedad: 12 años
Puntos: 0
Pregunta Crear funciones en mysql

Tengo el siguiente ejercicio: crear una función que retorne todas las reservas de un rango de fechas dado, que se hicieron efectivas

tengo el siguiente codigo

delimiter $
CREATE FUNCTION rangoReservas1(rango1 date,rango2 date) RETURNS varchar(500)
BEGIN
declare respuesta varchar(500);
select res_codigo into respuesta from reservas where res_fecha between rango1 and rango2 and res_efectiva='T';
return respuesta;
end$
delimiter ;

cuando solo ay una reserva en ese rango me funciona bn
pero cuando ay mas de una saca un error
mi duda es la siguiente que es lo que pasa como se retorna una lista de registros
  #2 (permalink)  
Antiguo 23/05/2012, 02:34
 
Fecha de Ingreso: mayo-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 5
Respuesta: Crear funciones en mysql

Hola juanesteban17,

Siento decepcionarte pero no se puede. Alternativas, si, muchas.

Puedes crear una tabla temporal, llenarla con esos datos y luego deberás hacer un select para ver el resultado. Ten encuenta que hasta que no finalices sesión esa tabla seguirá ahí con esos datos. Y que cuando lo hagas la tabla desaparecerá por completo. Por lo que te recomiendo una sentencia como "drop temporary table if exists X" al inicio.

También puedes definir un procedimiento con parámetros in o inout para luego utilizarlos con otra función... Muy lioso. No te lo recomiendo.

O también puedes hacer que la función defina una vista y luego consultarla.

Se me quiere antojar algo con cursores... pero nose muy bien el que. :)

Espero que te sirva. ¡Un saludo!
  #3 (permalink)  
Antiguo 23/05/2012, 03:00
 
Fecha de Ingreso: mayo-2012
Ubicación: medellin
Mensajes: 10
Antigüedad: 12 años
Puntos: 0
Respuesta: Crear funciones en mysql

Muchas gracias por tu respuesta.. En base a tu ayuda consulte un poco y pude realizar este ejercicio..
Que opina de este otro

Crear un store procedure que cambie las fechas de las reservas que estén dentro de un rango de fechas dado. La fecha se deberá cambiar al último día del siguiente mes que coincida con el día de la fecha que se va a cambiar. Es decir si la fecha que se va a cambiar es 08-05-2012 la fecha debe cambiarse a 26-06-2012 porque el 26 de junio es el último martes del mes siguiente a mayo y coincide con el día martes de la fecha original.

Sugerencias de como abordalo.. alguna funcion que retorne el último día del siguiente mes que coincida con el día de la fecha que se va a cambiar.

Gracias por la atencion
  #4 (permalink)  
Antiguo 23/05/2012, 03:14
 
Fecha de Ingreso: mayo-2012
Mensajes: 42
Antigüedad: 12 años
Puntos: 5
Respuesta: Crear funciones en mysql

Hola juanesteban17,

Con respecto a ese último, la función dayofweek() te será muy útil.

Devuelve el valor numérico correspondiente al día de la semana de la fecha que le pases, ten en cuenta que el calendario que utiliza por defecto es inglés y que la semana empieza en domingo. Te será muy útil porque te devuelve un número con el que puedes trabajar sumando o restando, para saber que dia de la semana es.

¡Un saludo!

Etiquetas: funciones, registros, 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 18:11.