Postgres函数执行出错

时间:2013-09-13 04:00:59

标签: postgresql-9.2

我正在尝试执行此功能,但它给了我错误

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';

2 个答案:

答案 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;