Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql PL/pgSQL语法错误_Postgresql_Syntax_Plpgsql - Fatal编程技术网

Postgresql PL/pgSQL语法错误

Postgresql PL/pgSQL语法错误,postgresql,syntax,plpgsql,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) ^ 我真的不明白这是怎么回事。您只能在PostgreSQ

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

     declare x varchar(100);
当我运行它时,会收到一条消息:

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

我真的不明白这是怎么回事。

您只能在PostgreSQL的函数体内部使用过程语句

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$$
声明x int;
开始
x:=10;
提出通知'>>>%使用示例

DO $$
Declare
  test varchar;
begin
   test := 'teste';
   if (char_length(test) > 0) then
      RAISE NOTICE '>>>%<<<', test;
   end if;
end;
$$;
DO$$
声明
测试varchar;
开始
测试:='teste';
如果(字符长度(测试)>0),则

引起注意'>>>%显示整个创建函数脚本这是整个脚本。您必须将其包装在命令中。这不是一个完整(语法正确)的PL/pgSQL“脚本”
DO $$
Declare
  test varchar;
begin
   test := 'teste';
   if (char_length(test) > 0) then
      RAISE NOTICE '>>>%<<<', test;
   end if;
end;
$$;