SQL
関数BEGIN
にはand END
like plpgsql
functionsがありません。
CREATE FUNCTION proc_test(userId int)
RETURNS void AS
$func$
UPDATE pl_payroll
SET remarks = viw.remarks
FROM pl_payroll diff, viwPayDifference viw
WHERE diff.userid = cast(userId as varchar);
$func$ LANGUAGE sql;
あなたもそれ自体が間違っているUPDATE
ように見えます。
pl_payroll
追加のテーブルに結合する WHERE 条件はありません。
- 2回目以降のご参加は不要です
pl_payroll
。
- の 2 番目のオカレンス
userId
はテーブル修飾されておらず、おそらくあいまいです。
UPDATE
マニュアルで構文を確認してください。次のようになります。
CREATE FUNCTION proc_test(userId int)
RETURNS void AS
$func$
UPDATE pl_payroll p
SET remarks = viw.remarks
FROM viwPayDifference viw
WHERE viw.userid = p.userId::varchar;
$func$ LANGUAGE sql;
余談ですが、 にキャストdiff.userId
する必要があるのは非常に疑わしいようですvarchar
。ベース テーブルのデータ型に問題がありますか?