我正在尝试在PostgreSQL 9.5中编写一个函数,该函数以日期作为参数。我的表有一个名为inception_date的列,我希望该函数返回表中所有inception_date大于变量提供的日期的行。以下是我的函数:
CREATE OR REPLACE FUNCTION somefunc(date) RETURNS setof table AS
$BODY$
DECLARE variable ALIAS FOR $1;
BEGIN
RETURN QUERY SELECT * FROM table WHERE inception_date > variable;
END;
$BODY$
LANGUAGE 'plpgsql';
SELECT somefunc('2014-07-02');
我找不到任何信息表明,在posgreSQL函数中,日期与其他数据类型的处理方式有所不同,但这个函数没有显示任何输出,而查询语句却有。
SELECT * FROM table WHERE inception_date > '2014-07-02';
返回15行。有人知道这里可能出了什么问题吗?
SELECT somefunc('2014-07-02');
和SELECT * FROM table WHERE inception_date > '2014-07-02';
并不相同,因为函数返回record
类型的单个列,而查询返回单独的列。你如何检查结果? - Abelistoinception_date
的类型是什么? - Ezequiel Tolnay