首页 > 解决方案 > 在 Postgres 中设置变量

问题描述

我想在必须从另一个表中选择要设置搜索路径的架构名称的函数中设置搜索路径。我想做类似的事情:

set search_path to (select db_schema_name from Schenma_Name_Table  where lookup_id = 'xxxx')

这种语法不起作用。它说 - “(”或附近的语法错误。

标签: postgresqlschemasearch-path

解决方案


set不能使用动态表达式,但你可以使用set_config()which 接受任何表达式:

select set_config('search_path', (select string_agg(db_schema_name, ',')
                                  from some_table 
                                  where lookup_id = 'xxxx'), false);

请注意,我使用string_agg()了查询返回多个值的情况。


推荐阅读