- ベストアンサー
PL/SQLでVIEWをPROCEDURE内で使用する方法とは?
- PL/SQLの中でVIEWを使用する方法について解説します。
- VIEWにパラメータを渡すことはできないため、代替案が必要です。
- VIEWを動的に作成して処理する方法を考えましょう。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
プロシージャ内でも動的SQLを使えばDDLの実行はできます。試してみてください。 set serveroutput on declare w_str varchar2(1000); begin --TABLE作成 execute immediate 'create table test_table(val varchar2(100))'; --データ投入 execute immediate 'insert into test_table values (:val)' using 'テスト'; --VIEW作成 execute immediate 'create view test_view as select * from test_table'; --VIEWからSELECT execute immediate 'select val from test_view' into w_str; --結果出力 dbms_output.put_line(w_str); --TABLE,VIEW削除 execute immediate 'drop table test_table purge'; execute immediate 'drop view test_view'; exception when others then raise; end; / set serveroutput off ただ、今回の質問はkouta77さんのおっしゃるとおりVIEW動的に作成する意味がよくわかりませんね。 やりたいこと、目的を明確にしてもらうと何かアドバイスできるかもしれません。
その他の回答 (1)
- kouta77
- ベストアンサー率20% (185/896)
プロシージャ―内でCREATE文(DDL文)は記述できません。 そもそもVW_KAIINをどう使いたいのですか? いちいちVIEWにする必要はなくて、プロシージャ―内でデータをSELECTする時に条件文を付けるのでは 駄目なんですか? この質問文を見る限りではVIEWにする意図が分かりません。
補足
他のプロシージャや、プログラム内からも、共通で使いたいので、 VIEWにしております。 まだ、PLSQL自体、見始めて間もないもので、見当違いことを言ってたらすいません。
お礼
上記方法でやりたいことが作成できました。 VIEW作成以外もご紹介いただき感謝です。 ありがとうございました。
補足
元々、前任者が作っておったもので、 VIEW自体は、他のプログラムで呼び出したり、共通で使っているのは 間違いないと思います。 私自身、オラクルやPLSQLに触れるのが初めてなものですから、 VIEW自体でパラメータが使えたら一番よかったのですが。 プロシージャ内でVIEWの項目が基本軸として使用されており、 安易に、既存のVIEWのコピーを、プロシージャ内のパラメータを使用して、もうひとつ作ったら、いけるかなぁ、と思ってやってみたところ、ダメでしたので、質問させていただきました。 上記方法ためさせていただきます。 ありがとうございます。