Несколько операторов выбора в одной функции - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть следующая функция:

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 ;

Я получаю сообщение об ошибке во 2-м операторе выбора, говорящее «ожидается a (или с»).

Я действительно не понимаюСинтаксис MySQL Workbench. Это кажется мне довольно случайным. Например, когда я должен поставить, а когда я не должен? Каковы правила?

1 Ответ

0 голосов
/ 13 ноября 2018

Вам нужно использовать SELECT .. INTO для обновления ваших переменных.

преобразовать синтаксис в 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 ;
...