将变量传递给 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
和参数符号,因此您必须以文本方式插入值。
我正在尝试向我的 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
和参数符号,因此您必须以文本方式插入值。