准备好的语句 - 使用参数指定 table 名称
prepared statement - using parameter to specify table name
在 windows 10
上使用 pgadmin4、postgres 9.6
我正在尝试使用参数在准备好的语句中指定 table 名称,如下面的代码所示。但是我确实收到如下语法错误。请注意,我可以使用具有 where
条件等的参数。
查询
prepare mySelect(text) as
select *
from
limit 100;
execute mySelect('some_table');
pgAdmin 消息
ERROR: syntax error at or near ""
LINE 3: from
^
SQL state: 42601
Character: 50
这是不可能的。 prepare 语句是持久执行计划 - 执行计划包含固定的数据源 - 所以 tables,列名不能是 mutable。
当您更改 table 列时,您将更改查询的语义 - 您将获得不同的执行计划,然后这种行为在准备好的语句中是不可能的。准备好的语句的主要用例是重用执行计划——计划一次,执行多次。但是有一些主要限制 - 只能更改一些参数。
在 windows 10
上使用 pgadmin4、postgres 9.6我正在尝试使用参数在准备好的语句中指定 table 名称,如下面的代码所示。但是我确实收到如下语法错误。请注意,我可以使用具有 where
条件等的参数。
查询
prepare mySelect(text) as
select *
from
limit 100;
execute mySelect('some_table');
pgAdmin 消息
ERROR: syntax error at or near ""
LINE 3: from
^
SQL state: 42601
Character: 50
这是不可能的。 prepare 语句是持久执行计划 - 执行计划包含固定的数据源 - 所以 tables,列名不能是 mutable。
当您更改 table 列时,您将更改查询的语义 - 您将获得不同的执行计划,然后这种行为在准备好的语句中是不可能的。准备好的语句的主要用例是重用执行计划——计划一次,执行多次。但是有一些主要限制 - 只能更改一些参数。