0

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

sqlplus または TOAD では、select ステートメントを実行する前に SET ROLE を実行できます。BIRTでも同じことをしたいと思います。

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

サーバー側で何かを追加または変更することは許可されていません。

4

3 に答える 3

1

Java を使用して、データ ソースの afterOpen メソッドでデータベースへの追加の呼び出しを行うことができます。JavaScript または Java イベント ハンドラーを使用して、SET ROLE ステートメントを実行したり、それを実行するストアド プロシージャを呼び出したりできます。これは、最初のデータベース接続が確立された後、データ セット クエリが実行される前に発生します。ただし、データ ソース接続を使用してその呼び出しを行うのは少し難しく、例として提供するコードは今のところありません。

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

それが役立つことを願っています

ル・バート・エキスパート

于 2009-12-29T06:55:27.197 に答える
-1

ロールを設定するためにストアド プロシージャを使用するアプローチは機能しません。少なくとも Apache Derby では機能しません。理由: 設定されたロールの有効期間は、プロシージャ自体の実行に制限されています。プロシージャから戻った後、ロールはプロシージャが呼び出される前と同じになります。つまり、レポートを実行する場合は、以前のロールと同じです。設定。

于 2010-08-22T14:51:41.990 に答える