Claro, você pode escrever uma função PL/pgSQL e consultar a tabela de catálogo
pg_attribute
você mesma. Mas é muito mais fácil com um dos seguintes:JSON
A função
row_to_json()
fornece funcionalidade que vai até a metade do caminho. Introduzido com o Postgres 9.2 :SELECT row_to_json(t, TRUE) FROM tbl t;
Você não precisa mencionar os nomes das colunas, a função os deriva do tipo de tabela.
->Demonstração do SQLfiddle.
Mas você precisará de
json_each_text()
do Postgres 9.3 para percorrer todo o caminho:SELECT json_each_text(row_to_json(t)) FROM tbl t;
Para obter uma ordem de classificação como você exibe:
SELECT (json_each_text(row_to_json(t))).*
FROM tbl t
ORDER BY 1, 2;
(Não está claro como você deseja classificar exatamente.)
Não testado. O SQLfiddle ainda não fornece o Postgres 9.3.
hstore
No entanto, você pode fazer o mesmo com o módulo adicional hstore . Disponível desde 8.4 . Instale-o uma vez com:
CREATE EXTENSION hstore;
Detalhes:
Par de valores-chave no PostgreSQL
Consulta:
SELECT (each(hstore(t))).*
FROM tbl t
ORDER BY 1,2;
Isso é tudo.
Novamente, sem SQLfiddle, já que não é possível instalar módulos adicionais lá.