Eclipse BIRT e Oracle:È necessario impostare il ruolo prima di eseguire il report

StackOverflow https://stackoverflow.com/questions/1177390

  •  19-09-2019
  •  | 
  •  

Domanda

È possibile impostare un ruolo del database prima di eseguire un report?Ho un numero di database ciascuno contenente un numero di schemi con lo stesso set di tabelle, in cui ogni schema ha un numero di ruoli per controllare la lettura, la scrittura, la gestione dei dati e così via.Nessuno di questi è un ruolo predefinito.

In sqlplus o TOAD posso eseguire SET ROLE prima di eseguire un'istruzione select.Vorrei fare lo stesso in BIRT.

Potrebbe essere possibile farlo utilizzando l'evento afterOpen per l'origine dati ODA, ma non ho trovato alcun esempio su come ottenere e utilizzare la connessione nativa in JavaScript.

Non mi è consentito aggiungere o modificare nulla sul lato server.

È stato utile?

Soluzione

È possibile effettuare una chiamata aggiuntiva al database nel metodo afterOpen dell'origine dati utilizzando Java.Puoi utilizzare JavaScript o un gestore eventi Java per eseguire l'istruzione SET ROLE o per chiamare una procedura memorizzata che la eseguirà per te.Ciò si verifica dopo che è stata effettuata la connessione database iniziale, ma prima dell'esecuzione della query del set di dati.Tuttavia, sarà un po' complicato utilizzare la connessione all'origine dati per effettuare la chiamata e al momento non ho il codice da fornire come esempio.

Un altro modo è creare un set di dati proc memorizzato che eseguirà il comando desiderato e farlo eseguire per primo.Trascina e rilascia il set di dati nel progetto del report e rendilo invisibile.Verrà eseguito prima di qualsiasi altra query.Non è la soluzione più pulita, ma facile da fare

Spero possa aiutare

Esperto di Birt

Altri suggerimenti

È possibile scrivere un trigger di accesso e fare un ruolo insieme a questo trigger (PL / SQL: DBMS_SESSION.SET_ROLE). È possibile determinare il nome utente, osuser, il programma e la macchina dell'utente che vuole effettuare il login.

L'approccio di utilizzare una stored procedure per impostare il ruolo non funziona - almeno non su Apache Derby. Motivo: durata del ruolo set è limitato alla esecuzione della procedura stessa - dopo il ritorno dalla procedura di ruolo sarà la stessa di prima della procedura è stata chiamata, vale a dire per l'esecuzione del rapporto lo stesso di alcun ruolo sarebbe mai stato set.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top