2013-07-27 50 views
0

我想創建一個函數,它返回一個名爲Rating的表中有一個where子句的行數。在聲明語句和結束語句之前我出錯了嗎?oracle pl sql函數有錯誤

create or replace 
FUNCTION get_movies(user IN NUMBER) RETURN NUMBER 
IS 
    DECLARE cnt NUMBER; 
BEGIN 
SELECT count(*) 
INTO cnt 
FROM rating 
where userid= user; 
RETURN cnt; 
END; 

我將不勝感激help.Thanks。

回答

3

您不應該有DECLARE關鍵字。你只需要一個匿名塊(或一個子塊)。

create or replace 
FUNCTION get_movies(p_userid IN NUMBER) RETURN NUMBER 
IS 
    cnt NUMBER; 
BEGIN 
    ... 

user是保留字,所以我沒有使用,作爲您的參數名稱建議。在where子句中,我不確定它是使用您的參數值還是執行該函數的用戶的名稱;這將錯誤,因爲該字符串值不能隱式轉換爲數字。

+0

謝謝亞歷克斯,我沒有注意到這一點,謝謝。 –