Frage

Ist es möglich, eine Datenbank-Rolle zu setzen, bevor ein Bericht ausgeführt wird? Ich habe eine Reihe von Datenbanken jeweils eine Anzahl von Schemata mit dem gleichen Satz von Tabellen enthalten, wobei jedes Schema eine Reihe von Rollen hat zu steuern, Lesen, Schreiben, Datenmanagement und so weiter. Keiner von ihnen sind Standardrollen.

In sqlplus oder TOAD kann ich ROLLE tun, bevor eine select-Anweisung ausgeführt wird. Ich möchte das gleiche in BIRT tun.

Es kann möglich sein, dies mit dem spielen Sie nach Open-Ereignisse für die ODA-Datenquelle zu tun, aber ich habe keine Beispiele dafür, wie zu bekommen und nutzt die native Verbindung in JavaScript.

gefunden

Ich bin nicht erlaubt hinzuzufügen, oder irgendetwas auf der Serverseite zu ändern.

War es hilfreich?

Lösung

Sie können einen zusätzlichen Aufruf an die Datenbank in dem spielen Sie nach Open-Methode der Datenquelle mit Hilfe von Java machen. Sie können JavaScript oder Java Event-Handler verwenden, um die SET ROLE-Anweisung auszuführen, oder eine gespeicherte Prozedur aufrufen, die es für Sie ausführen wird. Dies geschieht, nachdem die anfängliche DB-Verbindung hergestellt ist, aber bevor der Datensatz Abfrage ausgeführt wird. Es wird ein wenig schwierig sein, die Datenquellenverbindung zu verwenden, um jedoch diesen Anruf zu machen, und ich habe nicht den Code jetzt als Beispiel zur Verfügung zu stellen.

Eine andere Möglichkeit ist es, eine gespeicherte Prozedur Data Set zu erstellen, die den gewünschten Befehl ausgeführt wird, und haben das erste ausführen. Ziehen Sie den Datensatz in das Report-Design, und es unsichtbar machen. Es wird zuerst vor allen anderen Abfragen ausführen. Nicht die sauberste Lösung, aber einfach zu tun

Ich hoffe, das hilft

Le Birt Expert

Andere Tipps

Sie können einen Login-Trigger schreiben und eine Reihe Rolle in diesem Trigger (PL / SQL: DBMS_SESSION.SET_ROLE). Sie können den Benutzernamen, OSUser, Programm und Maschine des Benutzers festzustellen, wer sich anmelden möchten.

Der Ansatz eine gespeicherte Prozedur verwenden, um die Rolle für die Einstellung wird nicht funktionieren - zumindest nicht auf Apache Derby. Grund: Lebensdauer der Satz Rolle ist mit der Durchführung des Verfahrens selbst begrenzt - nach der Rolle von dem Verfahren der Rückkehr wird die gleiche sein wie vor dem Verfahren würde genannt wurde, dh für die Ausführung des Berichts der gleichen wie keine Rolle je zuvor Satz.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top