PostgreSql - 声明整型变量

use*_*152 3 postgresql

我试图在 postgresql sql 脚本中声明默认值 0 的整数变量:

DECLARE user_id integer;
Run Code Online (Sandbox Code Playgroud)

但它返回异常:

错误:“整数”处或附近的语法错误

我不确定如何声明一个变量,然后在 while 循环内使用该变量。

dan*_*end 6

您必须将代码放入用户定义的函数中。它不适用于 sql 窗口。下面的示例是一个返回您发送的号码的函数。变量

  --mybase is your database name. If public, remove it.
  CREATE OR REPLACE FUNCTION mybase.my_new_rotine(numeric)
  RETURNS numeric AS
  $BODY$
  --here, get the first variable from function
    declare id numeric= $1;

    begin
   --return the number
       return id;
    end;
  $BODY$

  LANGUAGE plpgsql VOLATILE
Run Code Online (Sandbox Code Playgroud)

然后,您可以在 sql 窗口上使用它,如下所示:

  select * from mybase.my_new_rotine(1)
Run Code Online (Sandbox Code Playgroud)

将返回 1


小智 5

不能在 SQL 语句中使用 DECLARE。你想要做的事情需要plpgsql。danielarend 的答案是正确的,但您可能想探索 DO(https://www.postgresql.org/docs/current/static/sql-do.html),它可以让您编写即席 plpgsql,而无需定义函数。