同一功能中有多个选择语句

时间:2018-11-13 13:47:34

标签: mysql mysql-workbench

我具有以下功能:

DELIMITER $$
create function fp_v2.fp_splitadjprice (id char(8), startdate date)
returns float 
begin
declare splitfactor float;
declare splitadjprice float;
declare spinofffactor float;
set splitfactor = 1.0;

select splitfactor = fp_v2.fp_splitfactor_prices(id, startdate);
select splitadjprice = convert(float,p_price * splitfactor)
from fp_v2.fp_basic_prices p
where fsym_id = id and p_date = startdate;
return splitadjprice;
END$$
DELIMITER ;

我在第二个选择语句上收到一条错误消息,说“期望a(或带有”。

我真的不了解MySQL工作台的语法。对我来说似乎很随意。就像我应该什么时候放;什么时候不应该?有什么规则?

1 个答案:

答案 0 :(得分:0)

您需要使用SELECT .. INTO来更新变量。

转换sintaxis为CONVERT(value, type),并且您不能使用FLOAT,因为类型需要使用DECIMAL,并且您可能根本不需要它,因为您的两个变量都已经浮动了。

DELIMITER $$
create function fp_v2.fp_splitadjprice (id char(8), startdate date)
returns float 
begin
declare splitfactor float;
declare splitadjprice float;
declare spinofffactor float;
set splitfactor = 1.0;

SELECT fp_v2.fp_splitfactor_prices(id, startdate) INTO splitfactor ;

SELECT convert(p_price * splitfactor, DECIMAL (10,4) INTO splitadjprice 
FROM fp_v2.fp_basic_prices p
WHERE fsym_id = id and p_date = startdate;

return splitadjprice;
END$$
DELIMITER ;