在 EXECUTE / USING 中使用带有布尔值的 PostgreSQL 参数

Using PostgreSQL parameters with booleans in EXECUTE / USING

我想为我的动态查询使用参数。我有这样的陈述:

RETURN QUERY EXECUTE 'SELECT * FROM boards AS b WHERE b.slug =  AND '
USING filter_slug, parent_id_query;

我得到一个ERROR: argument of AND must be type boolean, not type text

如果我这样做:

RETURN QUERY EXECUTE 'SELECT * FROM boards AS b WHERE b.slug = ''' || filter_slug || ''' AND ' || parent_id_query;

虽然有效。

我觉得我错过了什么/不明白什么。请帮忙。

您缺少的是如何使用参数。参数不是替换 SQL 语句中的任意文本的宏。相反,它们是代码中分配给 "variables" 的文字值。这些值通常是数字、字符串或日期。

特别是,参数不能用于:

  • 标识符(列名称和 table 名称)
  • 函数名称
  • 运营商
  • SQL 关键词
  • 通用表达式

因此,不幸的是,您必须在没有通用参数的情况下构建查询的那一部分(尽管您可以使用 =