2012-10-25 4 views
1

Weblogic Server에서 실행중인 Java 응용 프로그램과 Oracle 11g DB 서버에서 연결 중입니다.Java에서 호출 할 때 DB의 프로 시저가 작동하지 않습니다.

응용 프로그램에서 나는 DB 프로 시저를 호출하고 여러 다른 프로 시저를 호출하고 호출하는 매개 변수를 전달합니다.

나는 독립적으로 프로 시저를 테스트 할 때 완벽하게 예상대로 작동합니다.

Java 응용 프로그램에서 프로 시저를 호출하면 문제가 발생합니다.

절차에 오류가 있습니다 :

ORA-06508: PL/SQL: could not find program unit being called

역 추적이 다른 스키마에 존재하고 나의 현재 스키마의 동의어가있는 절차를 전화로 연결.

다른 사용자가 동일한 문제 또는 유사한 문제를 겪었 으면 도와주세요.

편집 # 1 : DB PROC

CallableStatement cstmt = null; 
private Connection dbConn = null; 
HashMap hashMap = new HashMap(); 
hashMap.put(DBDRIVER, driverType); 
hashMap.put(USERID, userName); 
hashMap.put(PASSWORD, password); 
hashMap.put(SID, dbName); 
hashMap.put(IPADDRESS, intDBServer); 
hashMap.put(PORT, dbPort); 
dbConn = (Connection)cmmObj.connect(hashMap); 
cstmt = dbConn.prepareCall(queryToRun); 
cstmt.setString(1, ReqId); 
cstmt.executeUpdate(); 
호출에 대한 샘플 코드

PROC 전화는 {전화 Proc_CALL (?)}

+3

저장된 proc를 호출하는 코드를 게시하십시오. – duffymo

+0

Java 응용 프로그램에서 사용하는 Oracle 사용자에게 프로 시저에 대한 액세스 권한이 있습니까? – gorzan

+0

@duffymo : 코드를 게시 할 수 없습니다. 회사 정책. –

답변

0

아마도이 문제점을 발견했습니다. 이상하게 들릴지라도 듣고 있지만 작동하는 것처럼 보입니다.

시스템에서 3 개의 스키마가 연결되어 있습니다.

하나는 모든 호출이 만들어진 스테이징 스키마입니다. 두 번째는 전화가 걸린 주 스키마입니다. 호출 된 프로 시저가이 스키마에 존재했습니다.

세 번째 스키마는 주 스키마 프로 시저에서 호출 된 프로 시저가있는 다른 스키마입니다.

간체 다음 CoSchema에

StageSchema.Caller(Synonym)-->>

MainSchema.Proc_Call(Procedure)-->>

CoSchema.insideCall(Procedure).

보조금은 아니지만 스테이지 스키마로, 기본 스키마에 사용할 수있었습니다.

이론에 따라 스키마에 임의의 프로 시저가 부여되는 경우 다른 프로 시저에 대한 모든 내부 호출은 중요하지 않습니다.

그러나이 경우 내가 Stage Schema에 권한을 부여하면 모든 것이 완벽하게 작동하는 것으로 보입니다.

아무에게도 해결책이 있다면, 그 이유를 알려주십시오.

0
그것은 당신의 동의어 라운드 잘못된 방법 인 것처럼 나에게 소리

- 호출 스키마에는 호출 된 프로 시저 + 동의어와 동의어가 필요합니다.

+0

맞지 않습니다.그렇다면 내 절차가 컴파일되지 않았을 것입니다. 모든 교부금은 실행되었고 다시 확인하기 위해 모든 객체에 대해 두 가지 방식으로 모두 수행했습니다. –

+0

두 경우 모두 정확히 동일한 사용자 이름/스키마를 사용하고 있습니까? –

+0

기본적으로 데이터 준비 스키마에서 주 스키마 개체를 호출하고 있습니다. 주요 스키마의 승인이 스테이징 스키마에 제공되었으며 동의어가 호출을 위해 기본 스키마에 생성되었습니다. 오류가 발생하면 동의어 호출 시점입니다. –

관련 문제