0

我正在尝试向我的 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 $$
4

1 回答 1

2

尝试过一次类似的工作,最后执行格式化查询

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在实用程序语句中使用和参数符号,因此您必须以文本形式插入值。

于 2016-06-29T16:43:58.490 回答