Vanilla Postgres,从准备好的声明中选择

时间:2018-03-12 11:09:56

标签: sql postgresql subquery prepared-statement

我想在子查询中使用预准备语句。 简单的例子:

PREPARE get_series(int) AS SELECT * FROM generate_series(1,$1);

SELECT * FROM EXECUTE get_series(13);

但是我收到了语法错误。

作为替代方案,我可以使用存储过程,但整个想法是保留源代码中的所有内容,并且预准备语句允许调用参数化查询。它类似于UDP,但在源代码方面。

注意:我使用的是Postgres 10.2

2 个答案:

答案 0 :(得分:0)

EXECUTE是一个SQL语句,而不是可以在FROM子句中使用的表达式。

试试这个:

EXECUTE get_series(13);

您不能在子查询中使用EXECUTE - 只允许SELECT

我会说你不应该为此准备好陈述;也许你需要一套回归功能。

答案 1 :(得分:0)

实际上,我可以使用CTE创建复杂的查询。 CTE将使其更易于阅读,并通过准备声明进行参数化。最后,查询仍然保留在源代码中,在源代码中,我可以提取可重用的部分。