sql - 在 postgres 中使用函数时出现语法错误

标签 sql postgresql

我一直在尝试在 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/

相关文章:

sql - 使用jackc/pgx将空字符串或null作为null插入到postgres中

postgresql 除零错误处理

postgresql - SELECT function() AS column 和 SELECT function() column 的区别

sql - Oracle SQL对分区表的高效查询: "order by case"

sql - 查找连续的两行

mysql - LEFT OUTER JOIN 仅最新记录

sql - 根据最小数字的精度将数量添加到数字

python - Pyodbc 不返回精确的日期时间数据

php - 这个php 'know'里面的SQL逻辑怎么选什么?

sql - STRING_AGG 忽略 PostgreSQL 中的 GROUP BY