【发布时间】:2014-08-01 13:28:47
【问题描述】:
我有一个 plpgsql 函数 complementwhere(parameter1 date) 它返回一个复杂的 where 子句作为文本,假设它返回 clause2 = filter2 作为示例,但它实际上返回了一堆其他子句。
我需要在 select 的 where 子句中调用这个函数来补充那个子句,这就是我目前所拥有的:
SELECT value1 FROM table1 WHERE clause1 = filter1 AND complementwhere(parameter1);
但这会返回错误
WHERE 的参数必须是布尔类型,而不是文本类型
这样做的正确方法是什么?
【问题讨论】:
-
您可以尝试将整行传递给您的函数并对其进行更改,以便它返回布尔值,指示行是否与您的复杂 where 子句匹配。看到这个java2s.com/Code/PostgreSQL/Store-Procedure-Function/…
标签: postgresql plpgsql dynamic-sql