but the custom function I am trying to call (from another function) does not return one row, but several rows, which I'd like to store into a temp table:
SELECT out_word AS word, max(out_score) AS score INTO TEMP TABLE _words ON COMMIT DROP FROM check_words(in_uid, in_gid, in_tiles) GROUP BY word, gid;
Francisco is right. SELECT INTO doesn't have the same meaning in SQL and PL/pgsql. If you want to insert the result of the SELECT into a temporary table, create the temp table and insert into it: