Hello Gaizka,
your proposal doesn't seem to work on my database (PG 7.1.2).
For one it doesn't accept the brakets:
ERROR: parser: parse error at or near "FROM"
When I remove the four brakets, it is telling me:
ERROR: parser: parse error at or near "col1"
When I remove everything inside the first pair of brakets plus all four brakets, it is telling me:
ERROR: Cannot cast type 'numeric' to 'varchar'
I think that postgres as mature as it is now should really have a feature to change types of columns etc.