PL/pgSQL语法错误

use*_*745 5 postgresql syntax plpgsql

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

     declare x varchar(100);
Run Code Online (Sandbox Code Playgroud)

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

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

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

Pav*_*ule 16

只能在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 
Run Code Online (Sandbox Code Playgroud)

或者在临时功能中(匿名阻止)

DO $$
DECLARE x int;
BEGIN
  x := 10;
  RAISE NOTICE '>>>%<<<', x;
END;
$$;
Run Code Online (Sandbox Code Playgroud)

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