Función en mysql

Tengo un problemilla con una función en mysql se supone que debo crear una función que reciba como parámetro el numero de una factura y se obtenga el total a pagar de dicha factura. Ya hice la consulta y esta bien pero al momento de correrla en la consola me sale un error...
Esta es la función que tengo
delimiter //
drop function  if exists total; //
create function total(fact int)returns int
begin
 declare resultado integer;
 set resultado:=select sum(pventa*detallefactura.cantidad) from productos,detallefactura,factura where     detallefactura.consecutivo=factura.consecutivo and detallefactura.producto=productos.codigo and  detallefactura.consecutivo=fact;
 return resultado;
        end; //
        delimiter ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'selec
t sum(pventa*detallefactura. Cantidad) from productos, detallefactura, factura' at
line 4
intento cambiarlo asi y tampoco
delimiter //
drop function  if exists total; //
create function total(in fact int)returns int
begin
 declare resultado integer;
 set resultado:=select sum(pventa*detallefactura.cantidad) from productos,detallefactura,factura where  detallefactura.consecutivo=factura.consecutivo and detallefactura.producto=productos.codigo and  detallefactura.consecutivo=fact;
 return resultado;
        end; //
        delimiter ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'in fa
ct int)returns int
begin
        declare resultado integer;
        set resultado:=selec' at line 1

1 respuesta

Respuesta
1
Creo que lo que tienes que hacer es hacer un select into de la siguiente forma:
DECLARE resultado INTEGER;
SELECT SUM(loquesea) INTO resultado FROM productos...etc...
Prueba y me cuentas.
Muchísimas gracias por tu colaboración y responder tan rapido, en efecto eso era lo que debía hacer. De nuevo muchas gracias ahora ya se por que las otras funciones que estaba haciendo arrojaban error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas