【发布时间】:2021-03-13 21:07:45
【问题描述】:
我的问题:我需要动态定义外部表,并且每次都设置不同的 where 条件。我在函数中执行此操作,但在创建外部表(通过 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); 但都没有奏效。这里的正确语法是什么?
x86_64-pc-linux-gnu 上的 PostgreSQL 11.10,由 gcc (GCC) 4.8.5 编译 20150623(红帽 4.8.5-39),64 位
【问题讨论】:
-
您使用的是哪个外部数据包装器? oracle_fdw?
-
是oracle_fdw连接oracle数据库
标签: postgresql foreign-data-wrapper oracle-fdw