Rob Sargent <robjsargent@xxxxxxxxx> writes: > One of my plpgsql functions is now throwing this error: > ERROR: query has no destination for result data > HINT: If you want to discard the results of a SELECT, use PERFORM instead. > CONTEXT: PL/pgSQL function optimal_pvalue_mono(text,text,integer,double precision,integer) line 65 at SQL statement > The code referenced at line 65 is the last line in a "for row in query” construct as follows: > 54 for segp in > 55 select s.id, s.firstmarker, s.lastmarker, > 56 v.ipv, > 57 array_length(p.probands,1) as pbs, > 58 s.lastmarker - s.firstmarker as mks > 59 from segment s > 60 join imputed_pvalue_t v on s.id = v.segment_id > 61 join probandset p on s.probandset_id = p.id > 62 join probandset_group_member m on p.id = m.member_id > 63 where s.markerset_id = mkset > 64 and m.group_id = pbsgid > 65 order by ipv, pbs, mks > 66 LOOP I think perhaps you've miscounted lines somehow, or are looking into the wrong function. The "at SQL statement" bit indicates that plpgsql thinks it's dealing with a run-of-the-mill SQL command, not a FOR loop; moreover, looking at the source code shows that "query has no destination for result data" is thrown only in exec_stmt_execsql, which ditto. Another possibility, perhaps, is that there's some syntax error a little bit above what you've shown us, such that this stanza isn't being seen as a FOR loop at all, but as more lines in a SQL command that started earlier. I'm not entirely sure how such a case would have got past parsing and into execution, but it's worth thinking about. In any case, this isn't solvable with just what you've shown us here. regards, tom lane