PL / SQL函数错误

时间:2011-06-18 13:19:28

标签: sql oracle function plsql

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

你能帮我吗?

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;

以下是错误消息:

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;

3 个答案:

答案 0 :(得分:12)

我认为您不需要DECLARE关键字。 syntax是:

create or replace function foo
 return return-type
is
 (vars)
begin
 (code)
end foo;

答案 1 :(得分:1)

您需要删除DECLARE关键字

例如:


CREATE OR REPLACE FUNCTION patient_func 
RETURN VARCHAR2
IS 
  patient_name VARCHAR(20); 
BEGIN 
  SELECT first_name 
  INTO patient_name
  FROM patient_tbl 
  WHERE patientID = 123;

  RETURN patient_name;
END patient_func;

答案 2 :(得分:0)

声明不得在您的代码中使用

SELECT BEZEICHNUNG 
    INTO nam 
    FROM PROJ_PROJEKT 
   WHERE PROJEKTID = empno;

在上面的陈述中什么是“BEZEICHNUNG”......如果它是一个名字,它不能直接转移到nam 列名可以移动到标识符中......上面的代码必须如下所示

select lastname into nam
from proj_projekt 
where projektid=empno;

此处“lastname”是列名称,它被移动到标识符“name”