これは試行錯誤の途中経過です。まとめ→http://d.hatena.ne.jp/irof/20100108/p2
- 
- 
- -
 
 
- 
PL/SQLは嫌だとか、古いバージョンで使えないとか、ネットワークから隔離されているとかの逃げ道に、SQLを作るSQLを発行して、作ったSQLを発行する手があります。1テーブルだけの場合は、WHEREを追加してください。
SELECT DECODE(COLUMN_ID, '1', 'SELECT ') "SELECT", COLUMN_NAME "COLUMN", DECODE( COLUMN_ID, (MAX(COLUMN_ID) OVER(PARTITION BY TABLE_NAME)), ' FROM ' || TABLE_NAME || ';', ' || '','' || ') "TABLE" FROM USER_TAB_COLUMNS ORDER BY TABLE_NAME, COLUMN_ID;
このSQLを実行すると、こんな感じでテーブルの全列を「,」で繋げるSQLが出来ます。
SELECT         COLUMN           TABLE
-------------- ---------------- ----------------
SELECT         COLUMN1          || ',' ||
               COLUMN2          || ',' ||
               COLUMN3          || ',' ||
               COLUMN4          || ',' ||
               COLUMN5          FROM TABLE1;
SELECT         COLUMN1          || ',' ||
               COLUMN2          || ',' ||
               COLUMN3          FROM TABLE2;
SELECT         COLUMN1          || ',' ||
               COLUMN2          || ',' ||
               COLUMN3          || ',' ||
               COLUMN4          FROM TABLE3;後は作ったSQLを発行すればCSV形式の検索結果が得られます。手っ取り早さや制限の少なさでではこちらが優勢、ただしテーブル数が多くなるとちょっと面倒な作業が増えます。環境とか対象テーブル数とか諸々の条件次第でやり方は選択すると良いです。
と思ったけど、面倒な作業の部分はクリアできました。逃げ道のつもりが本命に化けてしまった感じ。
