SELECT和FUNCTION调用之间的查询行为不同

时间:2010-12-07 20:03:52

标签: function postgresql sql

背景

为SQL语句创建包装函数。

问题

函数返回1行,而函数所基于的查询返回100多行。参数值相同:

SELECT * FROM as_rpt.tasc_fsa( 'ABC', '2010-01-01'::date, '2011-01-01'::date );

tasc_fsa函数是一个带有几个表连接的SELECT语句;函数语言是'sql'而不是'plpgsql'。

问题

函数返回单行的原因是什么,但是当没有通过函数调用时,函数使用的完全相同的查询正确返回超过100行?

任何想法都会有所帮助。

谢谢!

2 个答案:

答案 0 :(得分:3)

您使用RETURN SETOF ...?

SETOF表示您想要返回超过1行。

我很确定你忘了使用'RETURN SETOF'。

答案 1 :(得分:0)

你提到了“加入几张桌子”的功能。你的例子显然没有。如果正在执行连接,则可能导致较少的结果。

日期的解释方式是另一种可能性。当你得到1个答案时,它是否在你指定的范围内?