OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

PL/SQLでFROM句に変数を使いたい

  • 困ってます
  • 質問No.220924
  • 閲覧数1039
  • ありがとう数2
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 53% (22/41)

PL/SQL初心者なので方法があるかないかもわかりません。
SELECT TABLE_NAME
FROM USER_TABLES
で取得したテーブルを
PQL文に使用したいのですが可能ですか?
一応動的(DBMS_SQLを使用した方法)にSQLを作成することはできたのですが
パフォーマンスを考えると静的に使用したいのです。
動的、静的の表現でいいのかわかりませんが普通に
PL/SQL中にSQL文を使いたいんですがいかがでしょうか?
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全4件)

  • 回答No.1
レベル9

ベストアンサー率 38% (24/62)

こんばんわ FROM句に使いたい・・・と言うことは、 user_tablesから得られたテーブルに対して 何か処理を行いたいということですか? ※処理対象のテーブルが毎回異なるということですか? もう少し詳しく(具体的に)やりたい内容を 教えて戴けませんでしょうか? ※取得したテーブル名に対して何を行いたいのか、など もしかしたら、アドバイスくらいなら出来るかもしれません そ ...続きを読む
こんばんわ

FROM句に使いたい・・・と言うことは、
user_tablesから得られたテーブルに対して
何か処理を行いたいということですか?
※処理対象のテーブルが毎回異なるということですか?

もう少し詳しく(具体的に)やりたい内容を
教えて戴けませんでしょうか?
※取得したテーブル名に対して何を行いたいのか、など

もしかしたら、アドバイスくらいなら出来るかもしれません
それでは
補足コメント
Hk2001

お礼率 53% (22/41)

説明不足でしたかすみません

えっと
まず
user_tablesから得たTABLE_NAMEをカーソルを使い
1件ずつフェッチして
そのテーブルにたいして
SELECTやDELETE、DROPなどの処理をしたいのです。
ということで
>処理対象のテーブルが毎回異なるということですか?
そのとうりです。
アドバイスお願いします。
投稿日時 - 2002-02-19 20:41:57


  • 回答No.2
レベル9

ベストアンサー率 38% (24/62)

も一度こんばんわ うーん、これは難しいような気がします とは言っても僕も大して経験があるわけではないので、 「絶対に不可能」とは言い切れませんが・・・ 少なくとも僕の知識の範疇では無理そうです。 カーソルうんぬん・・・と言うことであれば、 FETCHして取得したテーブル名を IF文で条件分岐してその中でそれぞれの処理を行う・・・ と言うくらいしか僕には思いつきません。 うーん ...続きを読む
も一度こんばんわ

うーん、これは難しいような気がします
とは言っても僕も大して経験があるわけではないので、
「絶対に不可能」とは言い切れませんが・・・
少なくとも僕の知識の範疇では無理そうです。

カーソルうんぬん・・・と言うことであれば、
FETCHして取得したテーブル名を
IF文で条件分岐してその中でそれぞれの処理を行う・・・
と言うくらいしか僕には思いつきません。

うーん、お役に立てなくて、すみませんね
お礼コメント
Hk2001

お礼率 53% (22/41)

アドバイスありがとうございます。
相談した人もそのようなこといってました。
テーブル名というのが
たとえば
受注YYYYという形で
後ろ4桁が年になっているんです。
実用年数を考えるとIF文でもいいような気がしますが、
システム会社への納品物なのであんまりなソースになってしまい
NGくらいそうなので
投稿日時 - 2002-02-20 00:25:44
  • 回答No.3
レベル10

ベストアンサー率 42% (79/186)

PL/SQLで、DROP文等のDDL文を使いたいときは、DBMS_SQLパッケージを使用する必要があります。テーブル名を変数にしたいときも同じことです。 DBMS_SQLパッケージは、PL/SQLパッケージの中では割とよく使うパッケージなので、多くの情報が得られると思います。 調べてみてください。 ...続きを読む
PL/SQLで、DROP文等のDDL文を使いたいときは、DBMS_SQLパッケージを使用する必要があります。テーブル名を変数にしたいときも同じことです。

DBMS_SQLパッケージは、PL/SQLパッケージの中では割とよく使うパッケージなので、多くの情報が得られると思います。
調べてみてください。
お礼コメント
Hk2001

お礼率 53% (22/41)

アドバイスありがとうございます。
質問中でも書きましたが
DBMS_SQLパッケージでの実行は、動作確認済みです。

文章内容から推測すると「できない」ということになるのでしょうか?

ない頭なりに考えて、
UTL_FILE.PUT_LINEを使いPL/SQLの関数を作成してしまえばとも
考えましたが、結局 コンパイル時に解析しなくてはならず一緒ですね。
投稿日時 - 2002-02-21 01:47:41
  • 回答No.4
レベル10

ベストアンサー率 42% (79/186)

再びです。 はっきり結論付けなくてすみません。 完全に否定したわけではありませんが、以前サポートに似た質問をしたところできないといわれました。 あとパフォーマンス的にとおっしゃっていますが、作り方によりますが、SQL文のアクセスパスパスが決まらないのは、PL/SQL内の固定SQL文も、動的SQL文も同じだと思います。差が出るのは、SQL文自身の解析が、固定SQL文と動的SQL文の違いになると ...続きを読む
再びです。
はっきり結論付けなくてすみません。

完全に否定したわけではありませんが、以前サポートに似た質問をしたところできないといわれました。

あとパフォーマンス的にとおっしゃっていますが、作り方によりますが、SQL文のアクセスパスパスが決まらないのは、PL/SQL内の固定SQL文も、動的SQL文も同じだと思います。差が出るのは、SQL文自身の解析が、固定SQL文と動的SQL文の違いになると思いますが、以前テストしてみたら、その部分は大きな差はなかったと思いますが・・・。

いずれにしても、たいした力になれなくて申し訳ありません。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ