我想在一个函数中设置搜索路径,该函数的模式名称必须从另一个表中选择用于设置搜索路径的模式名称。我想做这样的事情:
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()
以防查询返回多个值。