我想对我的动态查询使用参数。我有这样的声明:
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;
虽然可以。
我觉得我正在丢失某些东西/不了解某些东西。请帮忙。
答案 0 :(得分:0)
您缺少的是如何使用参数。参数不是替换SQL语句中任意文本的宏。相反,它们是分配给代码内“变量”的文字值。这些值通常是数字,字符串或日期。
尤其是,参数不能用于:
因此,不幸的是,您必须在没有通用参数的情况下构造该部分查询(尽管您可以拥有$2 = $3
)