2015-10-06 110 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; 
/
相关问题