PL / pgSQL语法错误

时间:2013-02-19 17:00:16

标签: postgresql syntax plpgsql

我有一个非常简单的PL / pgSQL脚本:

     declare x varchar(100);

当我运行它时,我收到一条消息:

    [WARNING  ] declare x varchar(100)
        ERROR:  syntax error at or near "varchar"
        LINE 1: declare x varchar(100)
                          ^

我真的不明白这有什么问题。

3 个答案:

答案 0 :(得分:14)

你可以在PostgreSQL中的函数体内使用程序语句 only

CREATE OR REPLACE FUNCTION foo()
RETURNS int AS 
$$ -- here start procedural part
   DECLARE x int;
   BEGIN
     x := 10;
     RETURN x;
   END;
$$ -- here finish procedural part
LANGUAGE plpgsql; -- language specification 

或临时功能(匿名阻止)

DO $$
DECLARE x int;
BEGIN
  x := 10;
  RAISE NOTICE '>>>%<<<', x;
END;
$$;

不能将过程语句用作T-SQL之类的SQL语句。

答案 1 :(得分:0)

使用例子

DO $$
Declare
  test varchar;
begin
   test := 'teste';
   if (char_length(test) > 0) then
      RAISE NOTICE '>>>%<<<', test;
   end if;
end;
$$;

答案 2 :(得分:0)

我已经通过以下代码解决了这个问题:

do $$
declare InvestigationTypeId int;
declare var_STDStatusMasterId int;
begin
   InvestigationTypeId := null;
   var_STDStatusMasterId := null;
end;
$$;