2009-07-24 5 views
0

보고서를 실행하기 전에 데이터베이스 역할을 설정할 수 있습니까? 각 테이블에는 읽기, 쓰기, 데이터 관리 등을 제어하는 ​​여러 가지 역할이있는 같은 테이블 집합을 가진 많은 수의 스키마가 들어있는 여러 데이터베이스가 있습니다. 이들 중 어느 것도 기본 역할이 아닙니다.Eclipse BIRT 및 Oracle : 보고서를 실행하기 전에 역할을 설정해야 함

sqlplus 또는 TOAD에서 select 문을 실행하기 전에 SET ROLE을 수행 할 수 있습니다. BIRT에서도 똑같이하고 싶습니다.

ODA 데이터 소스의 afterOpen 이벤트를 사용하여이 작업을 수행 할 수는 있지만 JavaScript에서 원시 연결을 얻고 사용하는 방법에 대한 예제는 찾지 못했습니다.

서버쪽에 아무 것도 추가하거나 변경할 수 없습니다.

답변

1

Java를 사용하여 데이터 소스의 afterOpen 메소드에서 데이터베이스를 추가로 호출 할 수 있습니다. JavaScript 또는 Java 이벤트 핸들러를 사용하여 SET ROLE 문을 실행하거나이를 실행하는 저장 프로 시저를 호출 할 수 있습니다. 이것은 초기 db 연결이 만들어진 후 데이터 세트 쿼리가 실행되기 전에 발생합니다. 그러나 데이터 소스 연결을 사용하여 전화를 걸기는 다소 까다 롭습니다. 지금 예제로 제공 할 코드가 없습니다.

또 다른 방법은 원하는 명령을 실행할 저장 프로 시저 데이터 집합을 작성한 다음이를 먼저 실행하는 것입니다. 데이터 세트를 보고서 디자인으로 끌어서 놓고 보이지 않게하십시오. 다른 쿼리보다 먼저 실행됩니다.

을하는 데 도움이

희망 할 가장 깨끗한 해결책하지만 쉽지 않다 르 나루토 캐릭터 전문가

0

이 트리거 (PL/SQL : DBMS_SESSION.SET_ROLE)에서 로그인 트리거를 작성하고 역할을 설정할 수 있습니다. 로그인하려는 사용자의 사용자 이름, osuser, 프로그램 및 기계를 확인할 수 있습니다.

+0

서버 측에서 아무 것도 할 수없는 한 유감스럽게도 옵션이 아닙니다. 또한 여러 서버가 있습니다. – stili

+0

DBA와 상담하십시오. 그/그녀가 더 나은 해결책을 안다면, 그 해결책을 구현하십시오. 그/그녀는 더 나은 솔루션을 모르는 경우 그 또는 그녀가 방아쇠의 코드를 확인하고 생산 DB에 그것을 설치하도록 요청하십시오. – tuinstoel

-1

작동하지 않습니다 역할을 설정하는 저장 프로 시저를 사용하는 방법 - 적어도 아파치 더비에. 이유 : 설정된 역할의 수명은 프로 시저 자체의 실행으로 제한됩니다. 프로 시저에서 돌아온 후에는 프로 시저가 호출되기 전에 역할이 동일 할 것입니다. 즉, 역할을 수행하지 않은 것처럼 보고서를 실행하는 경우와 같습니다. 세트.

관련 문제