0

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

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

2 回答 2

1

那条线没什么问题。但是,一行有问题。

你的意思是end loop用分号终止;语法图是:

[ <<label>> ]
LOOP
    statements
END LOOP [ label ];
于 2013-09-13T04:09:06.077 回答
1

这要简单得多。只是简单的 SQL。SQL小提琴

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;
于 2013-09-14T12:00:55.427 回答