我一直在尝试在 postgres 9.6 中执行以下 sql。但我收到错误:“行”处或附近的语法错误
。这将在 CREATE AND REPLACE FUNCTION 开始的地方。
如果您愿意,我也制作了一个 sqlfiddle:http://sqlfiddle.com/#!17/48a30/1
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;
最佳答案
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;
关于sql - 在 postgres 中使用函数时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45947778/