Plsql 在Oracle SQL函数中声明多个变量
我希望在我的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
返回工资总额
。有什么想法吗
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 (