.NETでOracleアプリを作ろう(2) Page 4/4

これがODT+VS.NETの開発スタイルだ

日本オラクル
小海 友和
2005/12/2

ポリシーの作成

使用するODTの機能
Oracle問合せウィンドウ

 用意したEMP_VPD表にポリシーを作成します。Oracleエクスプローラで、SYSTEMユーザーでの接続からOracle問合せウィンドウを開いてリスト2のコードを入力し、実行します(図17)。

BEGIN
  DBMS_RLS.ADD_POLICY(
    'scott',                 (1)
    'emp_vpd',               (2)
    'emp_vpd_policy',        (3)
    'scott',                 (4)
    'emp_vpd_policy_func',   (5)
    'SELECT');               (6)
END;
リスト2 ポリシーの追加

 ポリシーの追加には、DBMS_RLS.ADD_POLICY関数を使用します。リスト2に赤字番号で示したそれぞれのパラメータの概略は以下のようになります。

  1. ポリシーを設定する表を所有するユーザー
  2. ポリシーを設定する表
  3. ポリシー名。1つの表について一意の名前である必要があります
  4. ポリシー・ファンクションを所有するユーザー
  5. ポリシー・ファンクション名
  6. ポリシーを適用する文の種類
図17 問合せウィンドウでのポリシーの作成

ポリシー適用後のデータの確認

使用するODTの機能
Oracleデータ・ウィンドウ
Oracle問合せウィンドウ

 Oracleデータ・ウィンドウを使用してEMP_VPDのデータを確認します。ポリシーを設定する前には見えていたデータが見えません。普通に接続されたセッションにはCLIENT_IDENTIFIERの値がセットされていませんので、ポリシーに従い、「WHERE 1=2」が内部的に追加され、データが表示されないのが正常な動作になります(図18)。

図18 Oracleデータ・ウィンドウ(表示データなし)

 CLIENT_IDENTIFIERに値をセットするには、.NETアプリケーションではClientIdを使用することで簡単にセットできますが、問合せウィンドウからプロシージャ(DBMS_SESSION.SET_IDENTIFIER)を使用してセットすることも可能です。CLIENT_IDENTIFIERをセットした後であれば、条件に応じたデータが表示されます。

 正常にVPDの設定ができたかどうかを確認するために、CLIENT_IDENTIFIERにD10をセットして、その後、EMP_VPD表にアクセスします。D10がセットされているのでdeptnoが10のものだけが表示されることが確認できます(図19)。

 まず、リスト3のプロシージャを使用して、CLIENT_IDENTIFIER値をセットし、同じ問合せウィンドウ内で、SELECT文(リスト4)を実行します(図19)。

BEGIN
DBMS_SESSION.SET_IDENTIFIER('D10');
END;
リスト3 CLIENT_IDENTIFIERの値をセット

SELECT * FROM emp_vpd;
リスト4 emp_vpdにアクセス

図19 問合せウィンドウでCLIENT_IDENTIFIERのセット後、問合せを実行

 問合せウィンドウでは、クエリの結果をグリッドで表示しますが、テキスト形式での表示に変更することも可能です(図20)。

図20 問合せ出力の設定の変更

 以上でVPDの設定・確認は終了です。

 今回はVPDの設定をODTの機能を使用して行いました。ODTを使用することで、VPDのような複雑な設定を含め、アプリケーション開発に必要なデータベース上の作業はすべてVS.NETから可能であることが理解できたと思います。また、データベースの設定だけではなく、PL/SQLの開発もVS.NETを用いてコーディングからコンパイルまでを行うことができます。

 次回は、いよいよ今回設定した表にアクセスする.NETアプリケーションを作成します。ご期待ください。(次回に続く)

4/4  

 Index
.NETでOracleアプリを作ろう(2)
これがODT+VS.NETの開発スタイルだ
  Page 1
・ODTのインストールとVS.NET環境の準備
・サンプル・アプリケーションの概要
  Page 2
・サンプル・アプリケーション作成の事前準備
  Page 3
・ポリシー・ファンクションの作成
Page 4
・ポリシーの作成
・ポリシー適用後のデータの確認


.NETでOracleアプリを作ろう

TechTargetジャパン

Database Expert フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH