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

function mysql

Estas en el tema de function mysql en el foro de Mysql en Foros del Web. Buenas tardes, necesito una ayuda.. cual seria el equivalente de este codigo en mysql? @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE FUNCTION ultimaFecha ( @numeroOCL ...
  #1 (permalink)  
Antiguo 06/06/2013, 11:02
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
function mysql

Buenas tardes, necesito una ayuda..

cual seria el equivalente de este codigo en mysql?

Código SQL:
Ver original
  1. CREATE FUNCTION ultimaFecha(@numeroOCL VARCHAR(50),@id_detalleL INT)
  2. RETURNS datetime
  3. BEGIN
  4. DECLARE @fecha datetime;
  5.           SELECT @fecha = MAX(Mov.fechaRecepcion)
  6.            FROM movimiento Mov
  7.             INNER JOIN detalle Det
  8.              ON Det.id_detalle = Mov.id_detalle
  9.            WHERE Det.numeroOC=@numeroOCL
  10.             AND Det.id_detalle = @id_detalleL
  11.             AND Mov.tipoMovimiento = 1;
  12.            
  13.     RETURN @fecha
  14. END

yo leyendo hice esto:

Código SQL:
Ver original
  1. delimiter //
  2. CREATE FUNCTION ultimaFecha(numeroOCL VARCHAR(50),id_detalleL INT)
  3. RETURNS DATE
  4. BEGIN
  5. DECLARE fecha DATE;
  6.  
  7.       SELECT fecha = MAX(Mov.fechaRecepcion)
  8.            FROM movimiento Mov
  9.             INNER JOIN detalle Det
  10.              ON Det.id_detalle = Mov.id_detalle
  11.            WHERE Det.numeroOC=numeroOCL
  12.             AND Det.id_detalle = id_detalleL
  13.             AND Mov.tipoMovimiento = 1;
  14.  
  15.     RETURN fecha;
  16. END;
  17. //
  18. delimiter;



pero me arroja en error: Not allowed to return a result set from a function


a los que me puedan ayudar gracias (Y)
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #2 (permalink)  
Antiguo 06/06/2013, 11:20
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: function mysql

Hola elasesino_broly:

A simple vista, creo que tienes dos errores en la consulta... uno, en la asignación del valor para el campo FECHA... utiliza INTO en lugar de (=):

Código:
...
SELECT Max(Mov.fechaRecepcion) INTO FECHA
...
y dos, el delimitador (//) indica el fin de una instrucción... esto es porque el delimitador común es el (;), sin embargo en funciones y procedimientos se debe considerar todo el conjunto como una sola instrucción... sin embargo después del END de la función tienes esto:

Código:
 RETURN fecha;
End;
//
delimiter;
Ponlo así:

Código:
...
   RETURN fecha;
End//
delimiter ;
Has la prueba y nos comentas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 06/06/2013, 12:50
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: function mysql

Gracias por tu respuesta me funciono asi:

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP FUNCTION IF EXISTS `ultimaFecha` $$
  4. CREATE DEFINER=`root`@`localhost` FUNCTION `ultimaFecha`(numeroOCL varchar(50),id_detalleL int) RETURNS date
  5. Declare fecha date;
  6.  
  7.    Set fecha =(   Select Max(Mov.fechaRecepcion)
  8.            From movimiento Mov
  9.             Inner Join detalle Det
  10.              On Det.id_detalle = Mov.id_detalle
  11.            Where Det.numeroOC=numeroOCL
  12.             And Det.id_detalle = id_detalleL
  13.             And Mov.tipoMovimiento = 1);
  14.  
  15.     RETURN fecha;
  16. End $$
  17.  
  18. DELIMITER ;
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"

Etiquetas: function, join, select, 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 07:32.