Function SELECT和函数调用的查询行为不同 背景

Function SELECT和函数调用的查询行为不同 背景,function,postgresql,sql,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多行 任何想法都会很有帮助 谢谢大家

为SQL语句创建包装函数

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

SELECT * FROM as_rpt.tasc_fsa( 'ABC', '2010-01-01'::date, '2011-01-01'::date );
tasc_fsa
函数是一个SELECT语句,包含一些表联接;函数语言是“sql”而不是“plpgsql”

问题: 一个函数返回一行的原因是什么?当不通过该函数调用时,函数使用的完全相同的查询正确地返回了100多行

任何想法都会很有帮助

谢谢大家!

您提到了函数“连接几个表”。你的例子显然不是。如果正在执行连接,则可能会导致较少的结果

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

您提到了函数“连接几个表”。你的例子显然不是。如果正在执行连接,则可能会导致较少的结果


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

您是否使用了RETURNSETOF

SETOF表示要返回多行


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

你用过RETURNSETOF

SETOF表示要返回多行


我很确定您忘了使用“RETURN SETOF”。

我在函数使用的查询中包含了源代码。当执行函数的一部分时,查询将产生1行。当使用完全相同的参数运行完全相同的查询(字面上的复制和粘贴)时,将返回100多行。希望这能澄清问题。我仍然怀疑1美元和2美元(日期范围)正在发生变化。尝试将日期范围编码到函数中,看看会发生什么。我使用了错误的函数定义模板:-(我有一个混合函数,一些返回单行,一些返回多行。我使用其中一个“单行”来编写函数)返回函数作为起点,从未想过检查函数原型。不过,谢谢!我在函数使用的查询中包含了源代码。当执行函数的一部分时,查询将生成1行。当完全相同的查询(字面上的复制和粘贴)时使用完全相同的参数运行,返回100多行。希望这能澄清问题。我仍然怀疑$1和$2(日期范围)正在以某种方式更改。请尝试将日期范围编码到函数中,看看会发生什么。我使用了错误的函数定义模板:-(我有一个混合函数,一些返回单行,一些返回多行。我使用其中一个“单行”返回函数作为起点编写函数,从未想过检查函数原型。不过,谢谢!