Я пытаюсь создать отчет, который вычисляет скидку, применяемую к заказу, используя хранимую функцию в Oracle 12c. У меня есть таблица, заказы со столбцом o_id. Каждая строка порядка представляет собой отдельную таблицу order_line, имеющую o_id, ol_quantity и ol_price. Если заказ превышает 100 долларов США, к заказу применяется скидка в размере 10 долларов США.Создание отчета с сохраненной функцией SQL
Я создал хранимую функцию, которая компилирует, но когда я пытаюсь запустить функцию я получаю ошибку:
Error(10,1): PLS-00103: Encountered the symbol "FINAL_COST" when expecting one of the following: * & - +/at mod remainder rem then <an exponent (**)> and or || multiset
Вот функция:
create or replace function DiscountsReport
(order_id IN REAL) RETURN REAL
is
percent real;
final_cost real;
being
select SUM(order_line.ol_quantity * order_line.ol_price) as total from order_line
where o_id = order_id;
if total >= 100 final_cost = 90;
return final_cost;
end;
И мой код это:
var cost number;
execute :cost := discountsreport(1);
print cost;
Хорошо, да. Благодарю. Я изменил его: создать или заменить функцию DiscountsReport (order_id IN REAL) ВЕРНИТЕ РЕАЛ является процентов реального; всего реального; final_cost real; начало выберите SUM (order_line.ol_quantity * order_line.ol_price) от order_line o в общую сумму, где o.o_id = order_id; , если всего> = 100 затем final_cost: = 90; конец если; return final_cost; конец; /но я все еще получаю ошибки. – ThomYorkkke
Каковы ошибки? –