有人知道如何在postgresql中调用自定义运算符吗?
我有以下接线员:

CREATE OR REPLACE FUNCTION algo.fun_temp(IN exp BOOLEAN)
RETURNS INTEGER AS $$
BEGIN
    RETURN NOT exp;
END;
$$ LANGUAGE plpgsql;

CREATE OPERATOR algo.~
(
PROCEDURE = algo.fun_temp,
RIGHTARG = BOOLEAN
);

当我试图用SELECT algo.~ TRUE呼叫这个接线员时,客户抱怨
"ERROR:  syntax error at or near "~"
LINE 1: SELECT algo.~ TRUE"

有人知道问题出在哪里吗?如有任何帮助,我们将不胜感激。

最佳答案

函数应该返回INTEGER,您所写的返回BOOLEAN

CREATE OR REPLACE FUNCTION algo.fun_temp(IN exp BOOLEAN)
RETURNS INTEGER AS $$
BEGIN
    RETURN (NOT exp)::INTEGER;
END;
$$ LANGUAGE plpgsql;

然后将模式添加到algo
SET search_path = public, algo;

10-05 23:27