如何调试不能在Oracle中构建的存储过程?

时间:2016-11-05 13:18:23

标签: oracle plsql

 Create or replace function get_empsalary_by dept(emp_dept varchar(20))
     return number is 
     Total_salary number(10,2);
     emp_dept varchar(20);
     emp_salary number(10,2);
     begin
      select empdept, sum(empsalary) into emp_dept,emp_salary from employe where    empdept=emp_dept;
     total_salary :=sum(empsalary);
     return total_salary;
     end;
    /

错误是:

 -----------------------------------------------------------------
 PLS-00103: Encountered the symbol "DEPT" when expecting one of
 the following:
 ( return compress compiled wrapped

2 个答案:

答案 0 :(得分:2)

Create or replace function get_empsalary_by_dept(p_emp_dept in employe.empdept%type)
return number 
is 
  Total_salary number(10,2);
  emp_dept varchar(20);
  emp_salary number(10,2);

begin

  select empdept, sum(empsalary) 
  into emp_dept,emp_salary 
  from employe 
  where    empdept=p_emp_dept
  group by empdept;

  -- total_salary := emp_salary;

  return emp_salary;
end;
/

也许这可以帮助你。

您的函数名称不能包含任何空格。输入参数(emp_dept)不能与变量相同。在这种情况下你不需要变量emp_dept。返回值可以是emp_salary。

答案 1 :(得分:0)

你的函数被称为“get_empsalary_by dept”(“by”和“dept”之间有一个空格)因此解析器会抱怨,因为它在函数之后需要一个有效的(即没有空格)函数名:相反,它会找到两个字符串。