同一函数中的多个select语句

xyhw6mcr  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(326)

我有以下功能:

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 ;

我在第二个select语句中收到一条错误消息,说“应为a(或with)”。
我真的不懂mysql workbench的语法。在我看来这是很随意的。比如我应该什么时候放;我什么时候可以不呢?。规则是什么?

bq8i3lrv

bq8i3lrv1#

你需要使用 SELECT .. INTO 更新变量。
转换轴为 CONVERT(value, type) 你不能用 FLOAT as类型需要使用 DECIMAL 你可能不需要它,因为你的两个变量都已经是float了。

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 ;

相关问题