我是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;
不确定导致此错误的原因。任何帮助表示赞赏。
答案 0 :(得分:9)
这不合适:
LANGUAGE sql
改为使用:
LANGUAGE plpgsql
您尝试使用的语法不是纯SQL语言,而是程序PL / pgSQL语言。在PostgreSQL中,你可以安装不同的语言,而PL / pgSQL在这方面只是一个小问题。这也意味着您可能会收到错误消息,即未安装此语言。在那种情况下使用
CREATE LANGUAGE plpgsql;
激活它。根据PostgreSQL的版本,您可能需要超级用户权限才能执行此步骤。
玩得开心。
答案 1 :(得分:1)
您不仅使用了错误的语言(如A.H.所述),还有returns
个关键字,您需要return
。您可能希望使用不同的分隔符来避免在函数中遇到字符串文字的问题,$$
非常常见。我认为你的功能应该更像这样:
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;