É verdade. Você não pode usar o tipo de registro fora do espaço PL/pgSQL. O valor RECORD é válido apenas em plpgsql. você pode fazer EXECUTE 'SELECT $1.descr' INTO d USING r::text::xx;