gpt4 book ai didi

postgresql - 另一个存储过程语法错误 - IF-THEN-ELSE

转载 作者:行者123 更新时间:2023-11-29 11:29:01 26 4
gpt4 key购买 nike

使用 postgresql 8.4,我正在尝试编写一个函数,它看起来像这样:

CREATE OR REPLACE FUNCTION addorupdate( smallint, varchar(7) ) RETURNS void AS
$$
BEGIN
IF EXISTS (SELECT * FROM consist WHERE slave = $1) THEN
UPDATE consist SET
master = $2
where slave = $1;
ELSE
INSERT INTO consist(slave, master) VALUES ( $2, $1 );
END IF;
END;
$$
LANGUAGE SQL;

然而,它失败了:

ERROR:  syntax error at or near "IF"
LINE 4: IF EXISTS (SELECT * FROM consist WHERE slave = $1) THEN

...我一直在浪费太多时间和咖啡因来弄清楚原因,并且可以请有新眼光的人来帮助我。

如果不清楚我要实现的目标:slaves 是一列唯一值。如果它存在,用当前的主人更新它。如果没有,请插入。

更新:将语言更改为 plpgsql,它现在抛出:

ERROR:  language "plpgsql" does not exist

更新:

CREATE LANGUAGE plpgsql;

(: 已解决:)

最佳答案

您的语言需要是 plpgsql 而不是 sql

关于postgresql - 另一个存储过程语法错误 - IF-THEN-ELSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com