Сначала мой код
CREATE OR REPLACE FUNCTION exchangeRate(from_in VARCHAR2(5), to_in VARCHAR2(5)) RETURN NUMBER IS
exchange_rate NUMBER;
BEGIN
CASE
WHEN to = 'USD' THEN
CASE
WHEN from = 'EUR' THEN exchange_rate := 25.49;
ELSE exchange_rate := 1;
END CASE;
ELSE exchange_rate := 1;
END CASE;
RETURN exchange_rate;
END;
Это более короткая версия, я удалил дополнительные, когда они идентичны (отличаются только валютой и курсами). Однако я не понимаю причину этого, я бы попросил помочь с пониманием ошибки.
CREATE OR REPLACE FUNCTION exchangeRate(from_in table.currency%TYPE, to_in table.currency%TYPE) RETURN table.price%TYPE IS
exchange_rate table.price%TYPE;
BEGIN
CASE
WHEN to = 'USD' THEN
CASE
WHEN from = 'EUR' THEN exchange_rate := 25.49;
ELSE exchange_rate := 1;
END CASE;
ELSE exchange_rate := 1;
END CASE;
RETURN exchange_rate;
END;
И поскольку я не уверен, что с этим не так, я также хотел бы спросить, могу ли я использовать table.row%TYPE
для объявления параметра и возврата типа
Редактировать: я переименовал его только в "from" и "to", прошу прощения за то, что исходный код имел разные имена (которые были слишком случайными)