同一函数中的多个select语句

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

我有以下功能:

  1. DELIMITER $$
  2. create function fp_v2.fp_splitadjprice (id char(8), startdate date)
  3. returns float
  4. begin
  5. declare splitfactor float;
  6. declare splitadjprice float;
  7. declare spinofffactor float;
  8. set splitfactor = 1.0;
  9. select splitfactor = fp_v2.fp_splitfactor_prices(id, startdate);
  10. select splitadjprice = convert(float,p_price * splitfactor)
  11. from fp_v2.fp_basic_prices p
  12. where fsym_id = id and p_date = startdate;
  13. return splitadjprice;
  14. END$$
  15. DELIMITER ;

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

bq8i3lrv

bq8i3lrv1#

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

  1. DELIMITER $$
  2. create function fp_v2.fp_splitadjprice (id char(8), startdate date)
  3. returns float
  4. begin
  5. declare splitfactor float;
  6. declare splitadjprice float;
  7. declare spinofffactor float;
  8. set splitfactor = 1.0;
  9. SELECT fp_v2.fp_splitfactor_prices(id, startdate) INTO splitfactor ;
  10. SELECT convert(p_price * splitfactor, DECIMAL (10,4) INTO splitadjprice
  11. FROM fp_v2.fp_basic_prices p
  12. WHERE fsym_id = id and p_date = startdate;
  13. return splitadjprice;
  14. END$$
  15. DELIMITER ;
展开查看全部

相关问题