2015-10-06 184 views
0

這段代碼有什麼問題?我找不出爲什麼我的代碼不起作用?

CREATE OR REPLACE FUNCTION get_salary_byname (e_name IN varchar2) 

    RETURN NUMBER 

    IS salary NUMBER; 

    BEGIN 

     SELECT salary 

     INTO salary 

     FROM emp 

     WHERE ename= e_name; 

     RETURN(salary); 

    END; 



BEGIN 

DBMS_OUTPUT.PUT_LINE (get_salary_byname('JEFF')); 

END 

該代碼的第一部分工作。 Oracle成功創建了該函數。

END *ERROR at line 5: 
ORA-06550: line 5, column 3: PLS-00103: Encountered the symbol "end-of-file" 
when expecting one of the following: ; <an identifier> 
<a double-quoted-delimited-identifier> 
The symbol ";" was substituted for "end-of-file" to continue. 
+1

請編輯您的問題,以便標題描述您遇到的問題。 *我無法弄清楚爲什麼我的代碼不起作用*是沒有意義的;如果你能弄清楚爲什麼你的代碼不起作用,你不會在這裏問。另外,*不起作用*不是有用的問題描述。它以什麼方式不起作用?你有錯誤嗎?如果是這樣,那麼確切的錯誤信息是什麼?如果不是,它會產生錯誤的結果嗎?你是否提供了一個參數,你期望得到什麼結果,你會得到什麼?如果您需要幫助,**請具體說明**並提供您已有的詳細信息。 –

+0

同意上面的評論,但是你的第一步解決這個問題幾乎肯定會在你的函數中添加一個異常處理程序,即使它只是...當其他人的異常時dbms_output.put_line(sqlcode ||':' || sqlerrm);這應該給你一些關於你的錯誤發生的想法。 –

+0

@Shaun,你不需要一個異常處理程序來查看錯誤是什麼 - 因爲它們沒有處理程序,任何異常都會引發給調用者。 –

回答

2

的錯誤信息表明你缺少結束語句,分隔符,你的情況,你需要:但是,試圖與代碼的第二部分執行功能時收到以下錯誤添加分號和斜槓來執行,例如:

BEGIN 
DBMS_OUTPUT.PUT_LINE (get_salary_byname('JEFF')); 
END; 
/
相關問題