2016-11-16 40 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沒有響應,所以我現在就可以驗證這個建議,但我建議您嘗試改變這兩條線:

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

要這樣:

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

祝你好運!