1

我有一个在 Weblogic 服务器上运行并连接到 Oracle 11g DB 服务器的 Java 应用程序。

在应用程序中,我调用了一个 DB 过程并将一个参数传递给它,该参数与多个其他过程进行通信和调用。

当我独立测试程序时,它可以按预期完美运行。

当我从 Java 应用程序调用过程时,问题就来了。

该过程给出了一个错误:

ORA-06508: PL/SQL: 找不到被调用的程序单元

Backtrace 导致调用另一个模式中存在的过程,并且在我当前的模式中具有同义词。

如果其他人遇到相同或类似的问题,请提供帮助。

编辑#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 调用是 { call Proc_CALL(?) }

4

2 回答 2

0

在我看来,您的同义词好像是错误的方式 - 调用模式需要被调用过程的同义词 + 执行权限。

于 2012-10-25T12:21:13.423 回答
0

我可能已经发现了这个问题。虽然听起来很奇怪,但它似乎有效:

我正在使用的系统有 3 个 Schema 连接。

一种是从中进行所有调用的暂存模式。其次是调用的主模式。被调用的过程存在于此模式中。

第三个是另一个模式,其中存在从主模式过程调用的过程。

简化:

StageSchema.Caller(同义词)-->>

MainSchema.Proc_Call(过程)-->>

CoSchema.insideCall(过程)。

CoSchema 的赠款可用于 Main Schema,但不适用于 Stage Schema。

尽管根据理论,如果将任何过程授予模式,那么对任何其他过程的所有内部调用都无关紧要。

但是在这种情况下,当我将授权授予 Stage Schema 时,一切似乎都运行良好。

如果有人对此有解决方案,请分享相同的原因。

于 2012-10-25T14:10:14.463 回答