Моя проблема: мне нужно динамически определять внешнюю таблицу и каждый раз устанавливать разные условия. Я делаю это в функции, но получаю ошибку, которая не имеет для меня смысла во время создания внешней таблицы (через oracle_fdw).
Создание внешней таблицы, которая работает:
CREATE FOREIGN TABLE MYFOREIGNTABLE
(
column1 int,
column2 text
)
SERVER fwdb
OPTIONS (table $$(
select
column1,
column2
from
table1
where
column3 = 5
and column4 = 'a'
)$$);
Теперь, если я попытаюсь разбить строку, чтобы поместить туда свои переменные (вместо переменной я оставил там номер, чтобы кто-нибудь мог попробовать), она перестанет работать, и я получаю сообщение об ошибке.
[Код: 0, состояние SQL: 42601] ОШИБКА: синтаксическая ошибка в или около ||
CREATE FOREIGN TABLE MYFOREIGNTABLE
(
column1 int,
column2 text
)
SERVER fwdb
OPTIONS (table $$(
select
column1,
column2
from
table1
where
column3 = $$ || 5 || $$
and column4 = 'a'
)$$);
Наверняка я попробовал свою строку в select, чтобы убедиться, что я не сделал синтаксической ошибки, и она работает без проблем.
select $$(
select
column1,
column2
from
table1
where
column3 = $$ || 5 || $$
and column4 = 'a'
)$$
Я пробовал несколько других вещей, таких как использование concat() или помещение всей строки в переменную OPTIONS (table myvariable);
, но ничего не работало. Какой здесь правильный синтаксис?
PostgreSQL 11.10 на x86_64-pc-linux-gnu, скомпилированный gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-разрядная версия