Angående fråga (1), kan jag nämna att jag har ibland sorterat resultatet med hjälp av kolumnnummer istället för kolumnnamn. Detta i en Oracle-DB. Anledningen till att jag gjorde så, var att det i några enstaka fall inte funkade med "order by <kolumnnamn>". I dessa fall löste jag problemet genom att göra "order by <kolumnnummer>". Varför jag hade det problemet, har jag ingen aning om. Jag ser inget konsekvent i det. Därav skulle man kunna tro att det i Oracle skulle gå att selectera m.a.p. kolumnnummer istället för namn. Men det går inte. Jag prövade det nyss.
Oki... jag håller på att bygger ett GUI där det ska gå att ange vilka kolumner som ska visas samt i vilken ordning de ska visas. Min första tanke var att spara kolumnnummren i en tabell men det går lika bra att spara namnen direkt istället.
Att i order by kunna ange ordningsnummer är något som de flesta DBMS stöder. Det fanns med i SQL-standarden till och med SQL-92. Det har senare tagits bort till förmån för att ange ett korrelationsnamn, dvs
select a+b as c from t order by c
Access t.ex. stöder inte ovanstående så där får man ange ordningsnummer.
Access har en systemtabell som heter msyscolumns som innehåller alla kolumnnamn.
Om du använder ADO eller något annat som bygger på OLE DB/ODBC så kan du använda openschema för att hämta tabellbeskrivningar.