我有两个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行。
有人可以告诉我发生了什么吗?
感谢。