我正在尝试执行此功能,但它给了我错误
ERROR: syntax error at or near "return"
LINE 12: return;
这条线有什么问题?我正在使用Postgres(9.2)。
create or replace function conditional_tax(taxPerc decimal(5),minSal decimal(5)) returns SETOF emp as
$body$
declare r emp%rowtype;
begin
For r in select * from emp where salary > minSal
Loop
r.salary = r.salary - (r.salary * taxPerc /100) ;
return next r;
End Loop
return;
end
$body$
Language 'plpgsql';
答案 0 :(得分:1)
该行没有没有错误。但是,上一行的 有问题。
您打算使用分号end loop
终止;
。 syntax chart是:
[ <<label>> ]
LOOP
statements
END LOOP [ label ];
答案 1 :(得分:1)
这简单得多。只是简单的SQL。 SQL Fiddle
create or replace function conditional_tax(
taxPerc decimal(5),
minSal decimal(5)
) returns SETOF decimal(5) as $body$
select salary * (1 - taxPerc / 100) as salary
from emp
where salary > minSal
;
$body$ language sql;