marcelo <marcelo.nicolet@xxxxxxxxx> writes: > What was wrong in the first approach? plpgsql's "SELECT INTO" expects a one-for-one match between the output columns of the SELECT and the columns of the INTO destination. So I'd expect something like this to work: DECLARE ranger billnumberrange%ROWTYPE; BEGIN SELECT * FROM billnumberrange WHERE ... INTO ranger; Your example clearly wasn't selecting all the columns, and it wasn't clear whether you paid any attention to column ordering; but both of those matter. regards, tom lane