postgresql - 创建函数时 postgres error syntax error at or near "int"

标签 postgresql

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

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;

错误是

ERROR:  syntax error at or near "int"
LINE 3: 'DECLARE result int;

不确定是什么原因导致此错误。感谢您的帮助。

最佳答案

这是不合适的:

LANGUAGE sql

改用这个:

LANGUAGE plpgsql

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

CREATE LANGUAGE plpgsql;

激活它。根据 PostgreSQL 的版本,您可能需要 super 用户权限才能执行此步骤。

玩得开心。

关于postgresql - 创建函数时 postgres error syntax error at or near "int",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7674031/

相关文章:

sql - 使用 WHERE 和 AS 从数据库中提取数据

python - 在 Python 中执行 Postgresql 查询

postgresql - 有没有办法跟踪 Postgresql 中的函数依赖关系?

django - 如何与 docker 共享本地 Postgres 数据库?

sql - 许多列的 SUM 的语法糖

sql - 忽略 WHERE 子句中的特殊字符

postgresql - Postgres - 尽可能多地匹配搜索参数的开头

performance - 在 postgresql 的列上设置 "NOT NULL"会提高性能吗?

PostgreSQL View 列命名

sql - 抓取表格中的所有行并抓取条件为