作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 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/
我是一名优秀的程序员,十分优秀!