Postgresql postgres错误语法错误位于或接近;int";创建函数时

Postgresql postgres错误语法错误位于或接近;int";创建函数时,postgresql,Postgresql,我对博士后很陌生。尝试运行以下脚本时出现此错误: CREATE OR REPLACE FUNCTION xyz(text) RETURNS INTEGER AS 'DECLARE result int; BEGIN SELECT count(*) into result from tbldealercommissions WHERE txtdealercode = $1; if result < 1 then returns 1; else r

我对博士后很陌生。尝试运行以下脚本时出现此错误:

CREATE OR REPLACE FUNCTION xyz(text) RETURNS INTEGER AS
'DECLARE result int;
BEGIN
    SELECT count(*) into result from tbldealercommissions
    WHERE 
    txtdealercode = $1;

    if result < 1 then returns 1; 
    else returns 2 ;
    end if;
END;
    '
LANGUAGE sql VOLATILE;
不确定是什么原因导致此错误。感谢您的帮助。

这是不合适的:

改用这个:

您尝试使用的语法不是纯SQL语言,而是过程PL/pgSQL语言。在PostgreSQL中,您可以安装不同的语言,而PL/pgSQL在这方面只是最基本的。这也意味着您可能会收到错误消息,即未安装此语言。在这种情况下,请使用

CREATE LANGUAGE plpgsql;
这激活了它。根据PostgreSQL的版本,执行此步骤可能需要超级用户权限


玩得开心。

你不仅使用了错误的语言(正如A.H.所指出的),而且还有
返回
关键字,你需要
返回
。您可能需要使用不同的分隔符,以避免在函数中遇到字符串文本问题,
$
非常常见。我认为您的函数应该更像这样:

CREATE OR REPLACE FUNCTION xyz(text) RETURNS INTEGER AS $$
DECLARE result int;
BEGIN
    select count(*) into result
    from tbldealercommissions
    where txtdealercode = $1;

    if result < 1 then return 1; 
    else return 2;
    end if;
END;
$$ LANGUAGE plpgsql VOLATILE;
CREATE或REPLACE函数xyz(text)将整数返回为$$
声明结果int;
开始
选择count(*)进入结果
来自TBLDALERCOMMissions
其中txtdealercode=$1;
如果结果<1,则返回1;
否则返回2;
如果结束;
结束;
$$LANGUAGE plpgsql VOLATILE;

Hi A.H,我将语言更改为plpgsql,并出现以下错误:错误:语言“plpgsql”不存在提示:使用创建语言将语言加载到数据库中。在帖子中添加了一些解释。@Shiver:自PostgreSQL 9.0以来。此外,您还可以:
创建或替换语言plpgsql当然。非常感谢。我运行了create命令并创建了函数。谢谢大家的帮助。请“投票”并“接受”有用的答案。
LANGUAGE plpgsql
CREATE LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION xyz(text) RETURNS INTEGER AS $$
DECLARE result int;
BEGIN
    select count(*) into result
    from tbldealercommissions
    where txtdealercode = $1;

    if result < 1 then return 1; 
    else return 2;
    end if;
END;
$$ LANGUAGE plpgsql VOLATILE;