在Oracle SQL函数中声明多个变量

时间:2016-12-04 11:00:42

标签: plsql oracle-sqldeveloper

我希望在我的SQL块中使用多个局部变量,但我总是会遇到一些错误。我只需要return sum of salary。有什么想法吗?

function Foo(projekt varchar2)
return number
  is sumSalary number;
  cursor kurzor is (
     select * 
       from (hr.employees inner join hr.workon using (employee_id))
            inner join hr.proj using (projno));
  oneLine kurzor%ROWTYPE;
begin
  sumSalary := 0;
  for oneLine in kurzor
  loop
    if oneLine.pname = projekt then
      dbms_output.put_line(concat(concat(oneLine.first_name,' '),oneLine.last_name));
      sumSalary := sumSalary+ oneLine.salary;
    end if;
    if oneLine.salary > 7500 then
      insert into HighSalary values(oneLine.first_name,oneLine.salary);
    end if;
  end loop;
exception
  when others then
    dbms_output.put_line('asd');
end;

我的错误:

  

错误报告:ORA-06550:第2行第1列:PLS-00201:标识符   ' SUMSALARY'必须声明ORA-06550:第2行,第1列:PL / SQL:   语句忽略ORA-06550:第3行第15列:PLS-00201:标识符   ' KURZOR'必须声明ORA-06550:第3行,第1列:PL / SQL:   声明被忽略了   06550. 00000 - "行%s,列%s:\ n%s"   *原因:通常是PL / SQL编译错误。   *操作:

1 个答案:

答案 0 :(得分:1)

function Foo(projekt varchar2)
return number
is sumSalary number; // remove this semicolon
cursor kurzor is (