VB.NETで楽々Oracleストアド・プロシージャ作成:.NETでOracleアプリを作ろう(5)(3/4 ページ)
本記事では、Oracleが提供する.NETプラットフォーム開発向けのミドルウェアやツールを使って、.NET環境でOracleアプリケーション開発を効率的に行うためのノウハウを解説する。(編集部)
手順3 LOBデータをアンロードするプロシージャの作成
次に格納されたLOBデータを取り出すためのプロシージャ(Unload_LOB)を続けて作成します(リスト5)。このプロシージャは、格納されているデータのファイル名(filename)とLOBデータの出力先(out_dir)を渡して実行されることで、指定した出力先にLOBデータをファイル名として出力します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このプロシージャでは、データベースへ接続後、OracleDataReaderでBLOBデータを読み出し、そのデータをFileStreamを用いて、指定のディレクトリにファイルとして書き出します。
BLOBデータのファイルへの書き出しも、PL/SQLパッケージとして用意されている「dbms_lob」を使用したPL/SQLブロックを作成することで可能ですが、長く複雑なものになってしまいます。
単純なデータアクセスだけの場合、パフォーマンスなどの点でPL/SQLストアド・プロシージャに多くのメリットがありますが、ファイルへの入出力や、複雑な計算を要する場合などでは、プログラミング言語としての慣れのほかにも.NETストアド・プロシージャにメリットを見いだせるケースも多いでしょう。
デプロイと実行
.NETストアド・プロシージャのデプロイ
Load_LOBとUnload_LOBのコードを記述した後、「ビルド」?「ソリューションの配置」をクリックしてOracle Deployment Wizard for .NETを起動し、.NETストアド・プロシージャをデプロイします。この際、「メソッドおよびセキュリティ詳細を指定」では、スキーマとして「SCOTT」、セキュリティは「外部」を指定します。これらのプロシージャは、ローカルファイルへ入出力を行いますので「外部」を指定する必要があります。
.NETストアド・プロシージャの実行
デプロイが無事完了したら、.NETストアド・プロシージャを実行してみましょう。.NETストアド・プロシージャは、Oracleエクスプローラより実行することもできますが、PL/SQLストアド・プロシージャと同様、SQL*Plusからの実行やほかのアプリケーションからの呼び出しも可能です。
リスト6は、SQL*Plusでの実行例です。まず、C:\SOURCEというディレクトリに10g.gifというファイルを用意します。Load_LOBプロシージャを使用して10g.gifファイルをデータベースに格納します。その後、Unload_LOBプロシージャを使用して、データベースに格納されているLOBデータをC:\OUTディレクトリに出力しています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Copyright © ITmedia, Inc. All Rights Reserved.