Postgres使用函数时出现语法错误

3
我一直试图在Postgres 9.6中执行以下SQL语句,但是出现了错误:“row”附近的语法错误。这个错误会出现在CREATE AND REPLACE FUNCTION开始的那一行。
如果您更喜欢使用sqlfiddle,我也已经创建了一个SQL演示
CREATE TEMPORARY TABLE input (
    id serial, certified boolean
);

CREATE TEMPORARY TABLE tests_person (
  id serial, certified boolean
);

INSERT INTO input (id, certified) VALUES (DEFAULT, True), (DEFAULT, False), (DEFAULT, True), (DEFAULT, False), (DEFAULT, True), (DEFAULT, False);

CREATE OR REPLACE FUNCTION update_record(row input) RETURNS RECORD AS $$
    UPDATE "tests_person"
    SET certified=row.certified
    WHERE certified=row.certified
    RETURNING *
$$ LANGUAGE SQL;

你的目标是什么? - Oto Shavadze
SQL SERVER!不需要这样做! - BobSki
1个回答

4

row是一个保留字,不能用作参数名称。请改用以下内容。

CREATE OR REPLACE FUNCTION update_record(_input input) RETURNS RECORD AS 
$$
    UPDATE tests_person
    SET certified=_input.certified
    WHERE certified=_input.certified
    RETURNING *
$$ LANGUAGE SQL;

谢谢!这是一个愚蠢的错误..现在我至少知道了。 - Jonathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接