以下のようなカラム名に都道府県名、それぞれのレコードに各都道府県の市区町村が入っているテーブルがあるとします。
都道府県TBL |北海道|青森県|秋田県|岩手県|山形県|・・中略・・|鹿児島県|沖縄県|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |札幌市|八戸市|秋田市|盛岡市|山形市|・・・・・・|鹿児島市|那覇市| | | | | | |・・・・・・| | |
この中から「~県」のデータのみ取得したいのですが、ベタ打ちすると以下のようなSELECT文を書くことになると思いますが、多くのカラム名を書くことになり、
時間もかかりますし、コーディングミスすることもありそうなので別の方法を探しました。
SELECT 青森県,秋田県,岩手県,・・(中略)・・,鹿児島県,沖縄県 FROM 都道府県TBL;
調べたら先にカラム名を取得しカーソル変数に代入する手法が使えそうなことを知り、以下のように書くと
「PLS-00428: INTO句はこのSELECT文に入ります。」のエラーが出ました。
Declare Cursor City_cur Is Select column_name From all_tab_columns Where TABLE_NAME = '都道府県TBL' And column_name like '%県'; City_name City_cur%rowtype; Begin Open City_cur; Loop Fetch City_cur into City_name; Exit when City_cur%notfound; Select City_name.column_name From 都道府県TBL; End Loop; Close City_cur; End;
エラーの原因はLoop内のSelect文だとは思うのですが、どれだけ調べても解決しませんでした。
そもそもSELECT文のフィールドにカーソル変数を使うことはできるのでしょうか?
補足情報(FW/ツールのバージョンなど)
SQL Developerを使用しています