DBとPL/SQLだけで、即、WEBアプリ)」2014.08.21ツイートこんにちは。インストラクターの蓑島です。体調を崩さぬように気を付けましょう。今回からしばらくの間、今までに学習したPL/SQLを使って簡単なWEBアプリを作る方法をシリーズで解説したいと思います。通常、WEBアプリケーションはいくつもの技術を組み合わせて作ります。WEBサーバーやアプリケーションサーバー(WEBコンテナー、EJBコンテナー)があります。プロシージャ言語としては、PHPや、Perlや、Java、などが使われます。それらの言語で、WEBページ(HTMLドキュメント)を動的に生成するわけです。データベースにアクセスするためには、それらの言語とデータベースの組み合わせに応じたコネクターやドライバーが必要です。このように、普通はWEBアプリを作成するということはいくつもの技術を組み合わせる必要があります。ところが、オラクルデータベースの場合は、オラクルデータベースだけで、WEBアプリが作成できます。他に必要なものはありません。WEBページを動的に生成する言語が必要ですが、それはPL/SQLです。PL/SQLはオラクルデータベースに必ず組み込まれている言語なので、結局、オラクルデータベースさえあればWEBアプリが作成できます。この方法が最も簡単なWEBアプリの作成方法だと思います。その方法をご紹介します。それはオラクルデータベース上で3つのものを準備するだけです。WEBページを生成するPL/SQLプロシージャ(通常はパッケージ化したもの)上記の1と2が環境の準備であり、一度だけ設定するものです。使用する機能は基本機能だけですから、おそろく10gバージョン以降であれば、どのバージョンでも動作可能と思います。DBなどの機能を使用している場合、何か影響があったら困りますので、必ずテスト環境で確認してください。上記3つを解説します。リスナーこれは、WEBサーバーに相当する機能です。HTTPリスナーとはいっても新規でリスナーを作成する必要はありません。HTTPポートが登録されていればよいのです。HTTPポートを構成すればデフォルトリスナーには自動的に登録されます。HTTPポートが構成されてるかどうか、次の問い合わせで確認できます。DUAL;GETHTTPPORT-----------8080私の場合、ポート番号8080で構成済みであることがわかります。構成されていなければ、この問い合わせは、0(またはNULL)が返ります。構成されていない場合、構成する必要があります。USERユーザーは"SYS"です。HTTPポートの構成PL/SQLプロシージャが正常に完了しました。これでHTTPのポート番号が8080に構成されました。HTTPのポート番号を変更したい場合も同じ方法です。HTTPのポート番号を設定すると、デフォルトのリスナーに対して自動的にポート番号が登録されます。それはリスナーのステータスを参照すれば確認できます。パス(ORACLE_HOME/bin)の通っているOSのコマンドラインから以下のコマンドで確認します。statusそこで表示される情報に以下のような内容があればOKです。リスナーが準備されたことになります。DBは、通常、オラクルデータベースに組み込み済みです。DBが構成されていない場合もありえます。DBを後でインストールすることも可能です。Serverを使う方法もあります。Serverはデータベースサーバーとは別サーバーですので、間にファイアウォールを配置してセキュリティを高めるといった使い方もできます。DBを使用する方法で解説します。Descriptor)DADとは、ブラウザからリクエストするときのURLの中に記述するディレクトリのような記述の部分です。データベースアクセスに必要な属性をまとめたもので、作り方も大変簡単です。以下に、「DAD」というわかりやすい名前のDADを作成しましょう。USERユーザーは"SYS"です。);PL/SQLプロシージャが正常に完了しました。これで、「DAD」という名前のDADが作成されました。いう記述があれば、それは「DAD」という名前のDADを示すことになります。DADを削除したければ以下のコマンドで可能です。DBMS_EPG.DROP_DAD('DAD名');なお、現在存在するDADの一覧を確認したい場合は以下のようなPL/SQLブロックで表示可能です。;/--以下がDADの一覧APEXDADPL/SQLプロシージャが正常に完了しました。私の場合、ご覧のように、「APEX」と、「DAD」という二つのDADがあります。DADには属性があるのですが、以下のようなPL/SQLブロックで表示可能です。wwv_flow_epg_include_modules.authorizePL/SQLプロシージャが正常に完了しました。上記の例は、1~13行目がPL/SQLブロックであり、5行目で&DAD_NAMEという置換変数があるので、実行前にキーボードから「APEX」というDAD名を入力しました(16行目)。21~27行目が出力された属性の一覧です。ご覧のように、「APEX」というDADには7個の属性があります。V_ATTRS);属性なしPL/SQLプロシージャが正常に完了しました。ご覧のように、今作成したばかりの「DAD」には属性はありませんが心配いりません。最低限、DADは存在するだけで十分機能します。属性については必要があれば設定しますが、それは別の機会に解説します。WEBページを生成するPL/SQLプロシージャ(通常はパッケージ化したもの)最後に、WEBページを生成するPL/SQLプロシージャです。以下の例をご覧ください。;/プロシージャが作成されました。ここではSCOTTという名前の一般ユーザで接続し、SAMPLE01という名前のプロシージャを作成しました。このプロシージャで注目していただきたいのは、4行目の「HTP.P(~)」という記述です。これはHTPパッケージのPというプロシージャなのですが、ここに指定した文字列ががそのままHTMLドキュメントへの出力になります。Toolkit」というパッケージ群の一部の機能です。覚えていれば汎用的に対応できます。このプロシージャには、P1というVARCHAR2型(文字型)のパラメータを設けました(1行目、4行目)。このパラメータを受け渡すのに一番簡単な方法は、URLの最後に「?パラメータ名=値」という記述を追加する方法です。ブラウザのURLに以下のように入力します。データベースサーバーと同一のマシンであればホスト名はlocalhostです。すると、DADに何の属性もないので認証を求められます。ここではこのプロシージャの所有者である、SCOTTユーザ名とそのパスワードを入力します。すると以下のようなブラウザの表示となります。わかりやすく赤でコメントを入れました。パラメータで指定したABCをインプットにして、SAMPLE01プロシージャが「指定されたパラメータはABCです」というアウトプットを生成したわけです。簡単ですが、INPUTとOUTPUTのある、立派なWEBアプリケーションですね。言語がPL/SQLですから、データベースのアクセスが簡単ですし、そのPL/SQL言語から直接HTMLに出力できるということは大変便利です。詳しい人ならここまでの情報をヒントに、後はいくらでも詳細なWEBアプリを作りこみできると思います。今回は、作成したプロシージャはパッケージ化していないただのプロシージャで作成しました。実際には、共通機能をファンクション化したり、リクエストの種類ごとにプロシージャを用意したりするのでサブプログラムの数が多くなります。よって、関連するプロシージャ、ファンクションはパッケージにまとめておくのが普通です。すると、URLでは「パッケージ名.プロシージャ名」のように記述するわけです。次回以降は、こうしたPL/SQLを使ったWEBアプリの作成で定石的なパターンを解説していきます。HTMLのタグについての若干の知識が必要となりますが、それほど難しいものではないです。都度説明しながら進めていきます。各社の登録商標または商標です。