在 Postgres 中设置变量

Set a variable in Postgres

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

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

此语法无效。它说 - 在“(”处或附近出现语法错误。

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

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

请注意,我使用了 string_agg() 以防查询 returns 多个值。