テーブルのカラム名とデータ型を、SQLを使って動的に取得する。

PostgreSQLのみですよー。
SELECTされるのは、カラム名とデータ型名(どちらも文字列)、それとそのカラムの長さ(数値)。
__SCHEMA_NAME__の部分にはスキーマ名を、__TABLE_NAME__の部分にはテーブル名をそれぞれ入れる。

SELECT
	pg_attribute.attname,
	pg_type.typname,
	pg_attribute.attlen
FROM
	pg_attribute,
	pg_type
WHERE
	pg_attribute.atttypid = pg_type.oid AND
	( pg_attribute.atttypid < 26 OR pg_attribute.atttypid > 29 ) AND
	attrelid IN (
		SELECT
			pg_class.oid
		FROM
			pg_class,
			pg_namespace
		WHERE
			relname='__TABLE_NAME__' AND
			pg_class.relnamespace=pg_namespace.oid AND
			pg_namespace.nspname='__SCHEMA_NAME__'
	);

ORDER BY句はお好みでどうぞ。
ちなみにカラムの長さは、VARCHARなどでは設定しない限りマイナス1になっている。

2008-10-02追記

つまるところ、PostgreSQLでは、ユーザーもスキーマもテーブルもカラムもビューもトリガーもファンクションも(以下略)システムがテーブル作ってそれに入れて管理している訳で、なのでそれらのシステムが使ってるテーブルを参照すれば、なんでもわかると言う次第です。
ちなみに他のデータベースではどんなことやってるのかは知らね。