You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何用SET将查询结果而非语句设为变量?

在PostgreSQL中用SET获取查询结果而非语句文本的方法

你当前的写法会把整个SELECT语句当作字符串赋值给变量,所以current_setting返回的是语句文本而不是查询结果。要让PostgreSQL先执行查询再把结果赋值给变量,需要把查询用括号包裹作为子查询:

SET var.foo = (SELECT first_name from names where id = '10');

SELECT current_setting('var.foo') AS FirstName;

这样执行后,FirstName就会返回查询得到的Paul了。

注意:这种方式要求子查询必须返回单个值(一行一列),如果查询返回多行或多列,PostgreSQL会抛出错误。

如果是在psql命令行环境下,也可以用客户端命令\set直接捕获查询结果:

\set foo `SELECT first_name from names where id = '10'`
SELECT :foo AS FirstName;

但这个是psql专属的命令,无法在其他PostgreSQL客户端(如JDBC、Python的psycopg2)中使用。

内容的提问来源于stack exchange,提问作者runnerpaul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 09:25:55