PL/SQL函数错误

ale*_*lex 1 sql oracle plsql function

我在这个功能上有错误.我不知道为什么它不起作用.

你能帮我吗?

CREATE OR REPLACE FUNCTION EMPNAM(empno in number) 
RETURN VARCHAR2 IS

  DECLARE nam VARCHAR2(40);

BEGIN

  SELECT BEZEICHNUNG 
    INTO nam 
    FROM PROJ_PROJEKT 
   WHERE PROJEKTID = empno;

 RETURN nam;

END EMPNAM;
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

ERROR: Error at line 7: 
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   ( begin case declare end exception exit for goto if loop mod
   null pragma raise return select update while with
    continue close current delete fetch lock
   insert open rollback savepoint set sql execute commit forall
    merge pipe purge

5. select BEZEICHNUNG into nam from PROJ_PROJEKT where PROJEKTID=empno;
6. return nam;
7. END EMPNAM;
Run Code Online (Sandbox Code Playgroud)

Mat*_*Mat 12

我认为你不需要DECLARE关键字.该语法是:

create or replace function foo
 return return-type
is
 (vars)
begin
 (code)
end foo;
Run Code Online (Sandbox Code Playgroud)

  • 实际上,`IS | AS`也用于程序中.但是,在匿名块中,您可以使用`DECLARE`.:) (2认同)