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

时间:2019-02-04 10:44:28

标签: sql postgresql dynamic plpgsql

我想对我的动态查询使用参数。我有这样的声明:

RETURN QUERY EXECUTE 'SELECT * FROM boards AS b WHERE b.slug = $1 AND $2'
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;

虽然可以。

我觉得我正在丢失某些东西/不了解某些东西。请帮忙。

1 个答案:

答案 0 :(得分:0)

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

尤其是,参数不能用于:

  • 标识符(列名和表名)
  • 函数名称
  • 操作员
  • SQL关键字
  • 一般表达

因此,不幸的是,您必须在没有通用参数的情况下构造该部分查询(尽管您可以拥有$2 = $3