2009-07-24 27 views
0

是否可以在運行報表之前設置數據庫角色?我有許多數據庫,每個數據庫都包含許多具有相同表格集的模式,其中每個模式都有一些角色來控制讀取,寫入,數據管理等等。這些都不是默認角色。Eclipse BIRT和Oracle:在運行報表之前需要設置角色

在sqlplus或TOAD中,我可以在運行select語句之前執行SET ROLE。我想在BIRT中做同樣的事情。

使用ODA數據源的afterOpen事件可以做到這一點,但是我還沒有找到任何有關如何在JavaScript中獲取和使用本地連接的示例。

我不允許在服務器端添加或更改任何內容。

回答

1

您可以使用Java在數據源的afterOpen方法中額外調用數據庫。您可以使用JavaScript或Java事件處理程序來執行SET ROLE語句,或調用將爲您執行的存儲過程。這發生在初始數據庫連接建立後,但在數據集查詢運行之前。但是,使用數據源連接進行該調用會有點棘手,但我現在還沒有代碼來提供此示例。

另一種方法是創建一個存儲過程數據集,它將執行所需的命令並首先執行。將數據集拖放到報表設計中,並使其不可見。它會在任何其他查詢之前運行。不乾淨的解決方案,但很容易做到

希望幫助

樂伯特專家

0

您可以編寫登錄觸發器並在此觸發器中執行設置角色(PL/SQL:DBMS_SESSION.SET_ROLE)。您可以確定要登錄的用戶的用戶名,osuser,程序和機器。

+0

不幸的是這不是一個選項,只要我不允許在服務器端做任何事情。還有一些服務器。 – stili 2009-07-25 08:24:20

-1

使用存儲過程設置的角色將無法正常工作的方法 - 上的Apache Derby至少不會。原因:設定角色的生命期限於程序本身的執行 - 在從程序返回後,角色將與程序被調用之前的角色相同,即執行報告與沒有角色會一樣組。

相關問題