質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

受付中

SELECT結果を変数に代入し、SELECT文のフィールドに入れて実行したい

144384
144384

総合スコア0

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

2回答

0リアクション

1クリップ

297閲覧

投稿2022/07/27 15:12

以下のようなカラム名に都道府県名、それぞれのレコードに各都道府県の市区町村が入っているテーブルがあるとします。

都道府県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を使用しています

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

sazi

2022/07/27 15:39 編集

> この中から「~県」のデータのみ取得したい 条件はどのようにするつもりですか? 出来なくはないけど、RDBを全然活かせていないので、先ずそのようなテーブルをデザインするのは間違いだと断言しておきます。 きちんと正規化しましょう。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。