PGAdmin中的PostgreSQL语法错误

7 postgresql plpgsql

我是PostgreSQL的新手,并且正在使用PGAdmin中的查询工具.我正在尝试运行使用变量的pgsql查询,但我似乎无法正确使用语法.

这是一个给出语法错误的示例查询:

DECLARE
  num INTEGER;

BEGIN

  num := 3;
  PRINT num;

END;
Run Code Online (Sandbox Code Playgroud)

更新:
好的,让我试试解释一下.我来自SQL服务器背景.在管理工作室中,我可以打开一个查询窗口并使用(T)-SQL查询.

例如,我可以写这样的东西:

DECLARE @num INT
SET @num = 3
SELECT @num
Run Code Online (Sandbox Code Playgroud)

我知道这是一个愚蠢的例子,但我只是试图声明一个变量并用它做一些事情.我正在尝试熟悉PL/PGSQL.


再次更新:再次
是我.我正在尝试下面的脚本并获得"[ERROR] 7.0-2:语法错误,意外字符".这是否适用于PGAdmin?

DECLARE
  num INTEGER;

BEGIN

  num := 3;
  RAISE NOTICE '%', num;

END;
Run Code Online (Sandbox Code Playgroud)

小智 11

您可以使用do语句.例如:

do $$
declare 
  num integer := 10;
begin

    RAISE INFO 'VARIABLE: %', num;

end;
$$language plpgsql;
Run Code Online (Sandbox Code Playgroud)

当您使用pgadmin时,您必须使用按钮EXECUTE QUERY而不是Execute pdScript,如下所述:

http://postgresql.1045698.n5.nabble.com/PgAmin3-Anonymous-code-block-can-t-be-executed-by-pressing-quot-Execute-PG-script-quot-button-td5771073.html

do语句的文档在这里:

http://www.postgresql.org/docs/9.3/static/sql-do.html


fil*_*rem 5

只是改写并"具体化"其他人的说法:PostgreSQL 中没有内联程序.也没有PRINT声明.你必须:

CREATE OR REPLACE FUNCTION test() RETURNS void AS $$
DECLARE
  num INTEGER;

BEGIN

  num := 3;
  RAISE NOTICE '%', num;

END;
$$ LANGUAGE plpgsql;

SELECT test();
Run Code Online (Sandbox Code Playgroud)


Edm*_*und 3

如果您尝试打印出来num(例如,用于调试),您可以尝试:

RAISE NOTICE '%', num;
Run Code Online (Sandbox Code Playgroud)

http://www.postgresql.org/docs/8.4/static/plpgsql-errors-and-messages.html

PRINT在 PL/pgSQL 中没有任何意义。