将变量传递给多路径外部数据包装器

时间:2016-06-29 16:05:58

标签: python postgresql python-2.7 multicorn

我试图通过我的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 $$

1 个答案:

答案 0 :(得分:2)

尝试获得类似的工作一次,最后使用executing 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和参数符号与实用程序语句一起使用,因此您必须以文本方式插入值。