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 に答える