我尝试在mysql中创建一个函数但是 错误是:#1320 - 在FUNCTION中找不到RETURN 谢谢你的帮助
DELIMITER $$
CREATE FUNCTION `bascar20_GPCSAS`.`getPrice`(codRef integer(11), ultimoInventario varchar(50), fechaInicial varchar(50), fechaFinal varchar(50))
RETURNS INT(11)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
-- SET @codRef := 105;
-- SET @ultimoInventario := "2016-10-31";
-- SET @fechaInicial := '2016-11-01';
-- SET @fechaFinal := '2016-11-30';
SET @S := (SELECT IF(COUNT(*)=0,0,Saldo) FROM inventarios_finales WHERE FK_codigo_referencia = @codRef and fecha_inventario = @ultimoInventario AND FK_bodega = 1001);
SET @VU := (SELECT IF(COUNT(*)=0,0,valorUnitario) FROM inventarios_finales WHERE FK_codigo_referencia = @codRef and fecha_inventario = @ultimoInventario AND FK_bodega = 1001);
SET @VT := @S * @VU;
BEGIN
DECLARE returnVal INT(11);
SELECT ROUND(T.precio,0) INTO returnVal
FROM (
SELECT Fecha, referecia, Tipo, Cantidad, PrecioUnitario, IF(Tipo='EA'||Tipo='EM',(@S:=@S+Cantidad),(@S:=@S-Cantidad)) as SALDO ,IF(Tipo='EA'||Tipo='EM',(@VT:=@VT+(Cantidad*PrecioUnitario)),@VT:=@VT-(Cantidad*@VU)) as valortotal,IF(Tipo='EA'||Tipo='EM',@VU:=@VT/@S,@VU) as precio
FROM documentos
WHERE PrecioUnitario != 0 and Cantidad != 0 and Fecha BETWEEN @fechaInicial and @fechaFinal and NombreArticulo = @codRef and (Tipo = 'RM' or Tipo = 'EA' or Tipo = 'EM')
ORDER BY Fecha
) T
ORDER BY T.Fecha DESC
LIMIT 1
RETURN returnVal;
END$$
错误是:
1320 - 在FUNCTION
中找不到RETURN
感谢您的帮助
答案 0 :(得分:1)
这是因为您在;
语句之前遗漏了RETURN
,如下所示,已发布的代码。
.....<rest of code>.....
ORDER BY Fecha
) T
ORDER BY T.Fecha DESC
LIMIT 1 <----------- Here
RETURN returnVal;