我在postgresql中非常新。我在这个问题中阅读了很多帖子,但在我的简单问题中仍然没有得到正确答案,并且一直收到语法错误。我尝试声明名为parents_d的新字符串变量,并在以下行中尝试分配新值。请帮帮我!
CREATE OR REPLACE FUNCTION retrieve_parents(cid integer) RETURNS text AS $$
BEGIN
DECLARE pd text;
pd:= 'function';
RETURN concat(cid,pd);
END;
$$ LANGUAGE plpgsql;
错误:在" pd"或附近重复声明 第4行:pd:='功能&#39 ;; ^
**********错误**********
错误:在" pd"或附近重复声明 SQL状态:42601 性格:104
答案 0 :(得分:7)
试试这个
<强> SQL Fiddle Demo 强>
CREATE FUNCTION retrieve_parents(cid integer) RETURNS text AS $$
DECLARE pd text;
BEGIN
pd:= 'function';
RETURN concat(cid,pd);
END; $$
LANGUAGE PLPGSQL
答案 1 :(得分:2)
我尝试将此作为编辑,但编辑因太小而被拒绝。
您遇到的问题是对plpgsql的误解(有些令人困惑)block syntax。如果您查看该页面,您缺少的关键部分是:
[ DECLARE
declarations ]
单个DECLARE部分中可以有多个声明。您还可以嵌套块:
DECLARE
c_pi CONSTANT double precision := pi();
v_text text;
BEGIN
DECLARE
v_blah text;
BEGIN
NULL;
END;
END;
请注意,分号在最外面的块上是可选的。