我具有以下功能:
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工作台的语法。对我来说似乎很随意。就像我应该什么时候放;什么时候不应该?有什么规则?
答案 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 ;