两块sql之间的意外差异

时间:2016-04-29 20:03:54

标签: postgresql

我有两个sql,我认为应该给出相同的结果而不是。它们都涉及一个功能

create or replace function viewFromList( lid integer, offs integer, lim integer ) returns setof resultsView as $xxx$
   BEGIN
    return query select resultsView.* from resultsView, list, files
                 where  list_id=lid and
                        resultsView.basename = files.basename and
                        idx(imgCmnt,file_id) > 0
                 order by idx(imgCmnt,file_id)
                 limit lim offset offs ;
     return;
   END;
$xxx$

第一个是:

        drop table if exists t1;
        create temp table t1 as select * from viewFromList( lid, frst, nmbr::integer );
        select count(*) into rv.height from t1;

第二个是

DECLARE
     t1 resultsView;
....
     select viewFromList( lid, frst, nmbr::integer ) into t1;
     select count(*) into rv.height from t1;

在我看来,rv.height在这两种情况下应该得到相同的值。它没有。如果重要的话,在我的情况下正确的答案是7,第二个代码产生12.我当然看了调用viewFromList的结果与适当的值。在psql中运行时,它返回预期的7行。

有人可以告诉我发生了什么吗?

感谢。

0 个答案:

没有答案