2016-11-16 2 views
0

私が関数を操作するときは、まずスタンドアロンのselect文をテストするのが好きです。私はそれを行い、それはうまくいった。私の問題は、それを関数に変換しようとするときです。mySQLの関数を完了する際に問題が発生する

これは、SELECT文であり、これは私の関数であり、それはエラーが発生します

select sum(item.retailPrice * orderItem.quantity) 
from orderItem 
join orders 
on orders.orderId = orderItem.orderId 
join item 
on item.itemId = orderItem.itemId 
where orders.orderId = 4 

動作します。

CREATE FUNCTION getTotalPrice(oId int) 
RETURNS int 
READS SQL DATA 
BEGIN 
declare total int; 
select sum(item.retailPrice * orderItem.quantity) into total 
from orderItem 
join orders 
on orders.orderId = orderItem.orderId 
join item 
on item.itemId = orderItem.itemId 
where orders.orderId = oId 
return total; 
END$$ 

この関数は、ユーザーがorderIdを入力できるようにする必要があります。

+0

簡単な答えは、あなたは本当にこれらの単純なクエリのための関数を記述する必要はありません。 – e4c5

+0

'RETURN'の上の行の最後にセミコロンがありません。 –

答えて

1

SELECT INTOを使用して変数を選択する場合は、@記号を使用してこれらの変数を前に付ける必要があります。残念ながらSQLFiddleので、私はこの提案を検証することができ、今応答していないが、私は次の2行を変更しようとお勧めします。これに

select sum(item.retailPrice * orderItem.quantity) into total 
... 
return total; 

select sum(item.retailPrice * orderItem.quantity) into @total 
... 
return @total; 

幸運を!

関連する問題