Eclipse BIRT и Oracle:Необходимо установить роль перед запуском отчета

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

  •  19-09-2019
  •  | 
  •  

Вопрос

Можно ли установить роль базы данных перед запуском отчета?У меня есть несколько баз данных, каждая из которых содержит несколько схем с одинаковым набором таблиц, где каждая схема имеет ряд ролей для управления чтением, записью, управлением данными и т. д.Ни одна из этих ролей не является ролью по умолчанию.

В sqlplus или TOAD я могу выполнить SET ROLE перед запуском оператора выбора.Я хотел бы сделать то же самое в BIRT.

Возможно, это можно сделать с помощью события afterOpen для источника данных ODA, но я не нашел примеров того, как получить и использовать собственное соединение в JavaScript.

Мне не разрешено ничего добавлять или изменять на стороне сервера.

Это было полезно?

Решение

Вы можете выполнить дополнительный вызов базы данных в методе afterOpen источника данных, используя Java.Вы можете использовать JavaScript или обработчик событий Java для выполнения инструкции SET ROLE или для вызова хранимой процедуры, которая выполнит ее за вас.Это происходит после того, как установлено первоначальное соединение с базой данных, но до выполнения запроса к набору данных.Однако будет немного сложно использовать соединение с источником данных для выполнения этого вызова, и сейчас у меня нет кода, который можно было бы предоставить в качестве примера.

Другой способ — создать сохраненный набор данных процедуры, который будет выполнять нужную команду, и выполнить ее первой.Перетащите набор данных в дизайн отчета и сделайте его невидимым.Он будет выполняться первым перед любыми другими запросами.Не самое чистое решение, но легко сделать

надеюсь, это поможет

Ле Бирт Эксперт

Другие советы

Вы можете написать триггер входа в систему и выполнить заданную роль в этом триггере ( PL/SQL:DBMS_SESSION.SET_ROLE).Вы можете определить имя пользователя, osuser, программу и компьютер пользователя, который хочет войти в систему.

Подход с использованием хранимой процедуры для установки роли не будет работать - по крайней мере, не в Apache Derby.Причина:время жизни заданной роли ограничивается выполнением самой процедуры - после возврата из процедуры роль будет такой же, как и до вызова процедуры, т.е.для выполнения отчета так же, как если бы роль никогда не была установлена.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top