如何在 pgAdmin 中声明变量

问题描述 投票:0回答:4

如果我在 psql 终端,那么我可以声明并使用这样的变量:

\set message_id soifsdaofisd.gmail.com;
select * from emails where message_id = ':message_id';

如何在 pgAdmin 中执行此操作?

当我在 pgAdmin 中尝试此操作时,我收到错误:

错误:“CALAdkA4YC0”处或附近的语法错误第 3 行:设置 message_id soifsdaofisd.gmail.com.

postgresql variables psql pgadmin
4个回答
33
投票

当尝试在 pgAdmin 中运行脚本时,我想要类似的东西,我想存储一个值以在多个查询中使用。这是我发现的和SQL类似的

set session vars.batch_id = '82';

select * from batches where batch_id = current_setting('vars.batch_id')::int;


18
投票

\set
是 psql(交互式命令行终端)的一项功能,在 pgAdmin 中不可用。

PostgreSQL 通常不在普通 SQL 中使用变量。您可以在匿名代码块(DO

语句)或
函数过程中使用PL/pgSQL代码

或者您可以(ab)使用“自定义选项”,对于纯文本服务器端“变量”,独立于客户端:

SET foo.test = 'SELECT bar FROM baz';
SELECT current_setting('foo.test');

详情:

其他选项:


2
投票

另一种方法是创建视图。

-- create view to store variable list
create view script_variables as select 'soifsdaofisd.gmail.com' as message_id;
-- run your script
select * from emails where message_id = (select message_id from script_variables);
-- clean up 
drop view script_variables; 

0
投票

尝试使用波纹管结构:

DO $$
DECLARE
    a INT;
BEGIN
    a := 1;
END;
$$;
© www.soinside.com 2019 - 2024. All rights reserved.