2009-07-24 9 views
0

レポートを実行する前にデータベースロールを設定することはできますか?私は、各スキーマに読み込み、書き込み、データ管理などを制御する多数の役割がある同じテーブルセットを持つ多数のスキーマを含む多数のデータベースを持っています。これらのどれもデフォルトの役割ではありません。Eclipse BIRTとOracle:レポートを実行する前にロールを設定する必要があります

sqlplusまたはTOADでは、select文を実行する前にSET ROLEを実行できます。私はBIRTでも同じことをしたいと思います。

ODAデータソースのafterOpenイベントを使用してこれを行うことは可能ですが、JavaScriptでネイティブ接続を取得して使用する方法の例は見つかりませんでした。

サーバー側で何も追加または変更できません。

答えて

1

Javaを使用してデータソースのafterOpenメソッドでデータベースを追加呼び出しできます。 JavaScriptまたはJava Event Handlerを使用してSET ROLE文を実行したり、それを実行するストアド・プロシージャを呼び出すことができます。これは、最初のdb接続が行われた後で、データセットクエリが実行される前に発生します。ただし、データソース接続を使用してその呼び出しを行うのはちょっと難しいでしょうし、今すぐ例として提供するコードはありません。

もう1つの方法は、目的のコマンドを実行するストアドプロシージャのデータセットを作成し、最初に実行させることです。データセットをレポートデザインにドラッグアンドドロップし、非表示にします。他のクエリの前に実行されます。

を助け

希望を行うにはきれいな解決策が、簡単ではありませんルバートエキスパート

0

このトリガー(PL/SQL:DBMS_SESSION.SET_ROLE)でログイン・トリガーを作成して、セット・ロールを実行できます。ログインするユーザのユーザ名、osuser、プログラム、マシンを確認することができます。

+0

私はサーバー側で何かをすることが許可されていない限り、これは残念なことにオプションではありません。多数のサーバーもあります。 – stili

+0

あなたのDBAに相談してください。より良い解決策を知っているときは、その解決策を実装してください。彼/彼女がより良い解決策を知らない場合は、トリガーのコードをチェックし、プロダクションDBにインストールするように頼んでください。 – tuinstoel

-1

動作しません役割を設定するためのストアドプロシージャを使用するアプローチ - 少なくともないのApache Derbyの上。理由:設定されたロールの存続期間は、プロシージャ自体の実行に限定されます。プロシージャから戻ると、ロールはプロシージャが呼び出される前と同じになります。つまり、ロールがない場合と同じレポートを実行します。セット。

関連する問題