MySQL - funcion de sql a my sql

   
Vista:
Imágen de perfil de kike

funcion de sql a my sql

Publicado por kike kiketo@hotmail.com (4 intervenciones) el 02/03/2016 16:45:36
Tengo esta funcion escalar en sql, con ella sumo los importes de todos los items de un determinado pedido:

1
2
3
4
5
6
7
8
9
10
11
ALTER function [dbo].[suma_importe_ped](@nro_ped int)
returns decimal(10,2)
as
begin
declare @vImporte decimal(10,2),
        @return decimal(10,2)
 
        select @vImporte=SUM(precio_tot)  from pedidos where nro_ped=@nro_ped
        SET @return = @vImporte
        RETURN @Return
end

Esto mismo por exigencias del usuario lo quiere con mysql y tengo lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
DELIMITER $$
CREATE FUNCTION `kontrol`.`suma_importe_ped`(nro_ped_p INT) RETURNS  DECIMAL
BEGIN
  DECLARE vImporte DECIMAL(10,2);
  DECLARE salida DECIMAL(10,2);
 
  SELECT vImporte=SUM(precio_tot) FROM pedidos WHERE nro_ped=nro_ped_p;
  SET salida = vImporte;
  RETURN salida;
END$$
DELIMITER ;

sin embargo el mysql me da errror: "Not allowed to return a result set from a function" algo asi como "No se permite devolver un conjunto de resultados de una función"
alguien me puede ayudar en hayar el error.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

funcion de sql a my sql

Publicado por Gonzalo (103 intervenciones) el 02/03/2016 17:50:42
Está mal redactada una parte:
1
2
3
4
5
6
7
8
9
10
11
DELIMITER $$
CREATE FUNCTION `kontrol`.`suma_importe_ped`(nro_ped_p INT) RETURNS DECIMAL
BEGIN
DECLARE vImporte DECIMAL(10,2);
DECLARE salida DECIMAL(10,2);
-- Aqui esta el fallo que yo veo:
SET vImporte = (SELECT SUM(precio_tot) FROM pedidos WHERE nro_ped=nro_ped_p);
SET salida = vImporte;
RETURN salida;
END$$
DELIMITER ;

O bien:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DELIMITER $$
CREATE FUNCTION `kontrol`.`suma_importe_ped`(nro_ped_p INT) RETURNS DECIMAL
BEGIN
DECLARE vImporte DECIMAL(10,2);
DECLARE salida DECIMAL(10,2);
 
SELECT SUM(precio_tot)
 FROM pedidos WHERE nro_ped=nro_ped_p
INTO vImporte ;
 
SET salida = vImporte;
 
RETURN salida;
END$$
DELIMITER ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar