如何在postgresql中声明变量并赋值?

时间:2016-03-04 02:00:50

标签: postgresql

我在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

2 个答案:

答案 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;

请注意,分号在最外面的块上是可选的。