在Windows 10上使用pgadmin4,postgres 9.6
我尝试使用参数在预准备语句中指定表名,如下面的代码所示。但是,我确实得到如下语法错误。请注意,我可以使用带有where
条件等的参数
查询
prepare mySelect(text) as
select *
from $1
limit 100;
execute mySelect('some_table');
pgAdmin消息
ERROR: syntax error at or near "$1"
LINE 3: from $1
^
SQL state: 42601
Character: 50
答案 0 :(得分:2)
这是不可能的。 prepare语句是持久执行计划 - 执行计划包含数据源 - 因此表,列名在那里不可变。
当您更改表,列,然后更改查询的语义 - 您将获得不同的执行计划,然后在预准备语句中无法执行此操作。准备好的报表的主要用例是重用执行计划 - 计划一次,执行更多。但是有一些主要的限制 - 只能改变一些参数。