Postgresql REPL将查询结果保存到变量中

时间:2018-11-22 16:56:18

标签: postgresql

REPL中,可以执行以下操作:

set @x = 1;
set @d = (select now());
select @x, @d;
+------+---------------------+
| @x   | @d                  |
+------+---------------------+
|    1 | 2018-11-22 16:38:11 |
+------+---------------------+

现在,我尝试在 REPL中执行相同的操作。我找到了:

set var.x = 1;
select current_setting('var.x');

它有效,但是我找不到如何将查询结果存储到变量中的方法。我已经尝试过了:

set var.d = (select now());
ERROR:  syntax error at or near "("
LINE 1: set var.d = (select now());
                    ^

select now() into var.d;
ERROR:  schema "var" does not exist

select now() into d;
-- creates new table, which is wrong

d := select now();
ERROR:  syntax error at or near "d"
LINE 1: d := select now();

能帮您找到解决方法吗?我正在使用psql (PostgreSQL) 10.5

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您要寻找的东西,但是有一种方法。 您可以生成结果并将其存储到如下所示的变量中:

\set x 1
select now() \gset
select :x, :'now';

结果将是:

 ?column? |           ?column?
----------+-------------------------------
        1 | 2018-11-22 19:50:38.391587+02
(1 row)