2014-11-07 4 views
0

Oracle 12c에서 저장된 함수를 사용하여 주문에 적용되는 할인을 계산하는 보고서를 생성하려고합니다. 테이블이 있고 열 o_id가있는 주문입니다. 주.의 각 행은 o_id, ol_quantity 및 ol_price를 갖는 별도의 order_line 테이블입니다. 주문이 $ 100 이상인 경우 $ 10 할인이 주문에 적용됩니다.저장된 SQL 함수를 사용하여 보고서 생성

내가 컴파일 저장 기능을 만들었습니다,하지만이 기능을 실행하려고 할 때 오류 얻을 :

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; 

그리고 내 코드 : 여기

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 

는 기능입니다 그것을 실행하십시오 :

var cost number; 
execute :cost := discountsreport(1); 
print cost; 

답변

0

귀하의 "if"진술은 절대적으로 잘못되었습니다. 설명서를 살펴보십시오. if-then-else

+0

그래요. 감사. 나는 그것을 변경 : 만들거나 기능이 을 DiscountsReport 대체 (ORDER_ID REAL IN) REAL이 %의 진짜 반환; 총 진짜; final_cost real; begin SUM (order_line.ol_quantity * order_line.ol_price)을 에서 전체로 선택하십시오. 여기서 o.o_id = order_id; 경우 총> = 100 다음 final_cost = 90; end if; return final_cost; end; /하지만 여전히 오류가 발생합니다. – ThomYorkkke

+0

무엇이 오류입니까? –