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

Plsql 在Oracle SQL函数中声明多个变量,plsql,oracle-sqldeveloper,Plsql,Oracle Sqldeveloper,我希望在我的SQL块中使用多个局部变量,但我总是会遇到一些错误。我只需要返回工资总额。有什么想法吗 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.pr

我希望在我的SQL块中使用多个局部变量,但我总是会遇到一些错误。我只需要
返回
工资总额
。有什么想法吗

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: 忽略语句 655000000-“行%s,列%s:\n%s” *原因:通常是PL/SQL编译错误。 *行动:


首先首先指定形式参数的名称,然后指定其类型,反之亦然。第二不要指定函数或过程的形式
varchar2
参数的大小。第三不要显式声明游标循环变量,它将由游标
for
循环隐式声明。四,<代码>sumfizu
未声明。。。完全重写你的程序。我在语义上完全不正确。谢谢你的编辑。如何格式化这样的错误?我按照你所说的方式更改代码,虽然我认为可以使用显式游标,但这不应该引起问题。我不是说显式游标,我是说显式声明游标
for
循环变量。我编辑了sumfizu,代码被翻译,虽然我错过了一个变量转换。现在来看看那些
cursor
changes。怎么做?
function Foo(projekt varchar2)
return number
is sumSalary number; // remove this semicolon
cursor kurzor is (