プロが教えるわが家の防犯対策術!

はじめまして。

通常FROM区には抽出するテーブル名を列挙すると思いますが、
ここにテーブル名の変わりに変数名(レコードの配列)などを使うことは可能でしょうか?

やりたいことは、最初にプログラム内で頻繁に使用するクエリ結果を保存しておき、その後保存しておいた結果をプログラムのいろいろなクエリで使用します。

諸事情により一時表などは使えません。

よろしくお願いします。

A 回答 (1件)

単純にFROM句に書いてもエラーになるので、動的SQLでやる方法ですかね。


SQL文を文字列として格納する変数を用意して、その文字列にFROM句が入ってる文字列を連結します。
その文字列をEXECUTE IMMEDIATEで実行すればできると思います。
配列の場合は、配列のどの要素がしっかりと明記してください。

例)
VAR_TEST VARCHAR2(10);
VAR_SQL VARCHAR2(1000);

VAR_TEST := 'TABLE_A';
VAR_SQL := NULL;

VAR_SQL := 'SELECT * FROM ' || VAR_TEST;

EXECUTE IMMEDIATE(VAR_SQL);

このままだと、SELECT文を実行するだけなので、INSERT文などに応用するなどしてみてください。
カーソルを動的にする場合はちょっとめんどくさいです。
その場合は、「カーソル 動的」などで検索してみてください。

頑張ってください。
    • good
    • 6

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A