2014-11-07 3 views
0

Я пытаюсь создать отчет, который вычисляет скидку, применяемую к заказу, используя хранимую функцию в 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; 

ответ

0

Ваше утверждение «если» абсолютно неверно. Взгляните на документацию: if-then-else

+0

Хорошо, да. Благодарю. Я изменил его: создать или заменить функцию 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

+0

Каковы ошибки? –