将变量传递给 multicorn 外部数据包装器

Pass variable to multicorn foreign data wrapper

我正在尝试向我的 fdw 传递一个选项,该选项的值是一个变量。我的直觉是这样做,但它说 x abc 处存在语法错误。我需要做什么才能让它发挥作用?

DO $$
DECLARE abc varchar :='hi';
Begin
    drop server partner cascade;
    create server partner foreign data wrapper multicorn options(
    wrapper 'multicorn.fdw.Fdw'
);
create foreign table partner_accounts(
    name text
) server partner options(
    x abc
);
END $$

尝试过一次类似于工作的东西,最后使用 executing a formatted 查询:

DO $$
DECLARE abc varchar :='hi';
BEGIN
    drop server partner cascade;
    create server partner foreign data wrapper multicorn options(
    wrapper 'multicorn.fdw.Fdw'
);
EXECUTE format('create foreign table partner_accounts(
    name text
) server partner options(
    x %L
)', abc);
END $$

%L 将值格式化为 SQL 文字,因此在本例中为 'hi'。您不能在实用程序语句中使用 USING 和参数符号,因此您必须以文本方式插入值。