ORA-06508: PL/SQL: 在包 AR_RECEIPT_API_PUB 过程中找不到正在调用的程序单元

Posted

技术标签:

【中文标题】ORA-06508: PL/SQL: 在包 AR_RECEIPT_API_PUB 过程中找不到正在调用的程序单元【英文标题】:ORA-06508: PL/SQL: could not find program unit being called in Package AR_RECEIPT_API_PUB Procedure Unapply 【发布时间】:2014-07-30 20:05:37 【问题描述】:

当自定义 Oracle Concurrent 程序之一尝试取消应用 Oracle AR 收据时,我收到以下错误。请在下面找到代码 sn-p。 现在,如果我要检查无效对象,我看不到任何与 AR 相关的包无效,包括 AR_RECEIPT_API_PUB。 任何指针都会有所帮助。 取消应用

ar_receipt_api_pub.unapply(p_api_version                     => 1.0
                          ,p_init_msg_list                   => fnd_api.g_true
                          ,p_receivable_application_id       => r_appn_cur.rcv_app_id
                          ,p_org_id                 => r_appn_cur.org_id
                          ,x_return_status                   => l_return_status
                          ,x_msg_count                       => l_msg_count
                          ,x_msg_data                        => l_msg_data);

【问题讨论】:

这会返回任何无效对象吗? SELECT Referenced_Owner, Referenced_name, Referenced_Type, AO.Status FROM DBA_Dependencies AD INNER JOIN DBA_OBJECTS AO on AO.Owner = AD.Owner and AO.Object_name = AD.name WHERE AD.name = 'AR_RECEIPT_API_PUB' ORDER BY AO.status asc; 如果没有,可能需要重新编译列表中的所有对象,有些东西可能只是“损坏”并且需要构建 asktom.oracle.com/pls/asktom/… SELECT * FROM ALL_Errors; 也可能显示一些有价值的东西。 对我来说听起来像是 Oracle 应用程序(可能是 EBS)。您是否授予 APPS 用户执行权限? 如果我记得,EBS 中的 _PUB 通常是同义词。所以,首先检查同义词 - select * from dba_synonyms where synonym_name = 'AR_RECEIPT_API_PUB';它指向正确的吗?然后,在 sqlplus 中,“DESC AR_RECEIPT_API_PUB”并检查程序“UNAPPLY”是否存在,并且您提供了所有正确的参数。 【参考方案1】:

如果包存在并且没有错误,可能用户正在尝试使用它,无法访问它。只是为了验证,尝试为包创建公共同义词并尝试它。

【讨论】:

【参考方案2】:

您是否确保设置了所有必需的 api 参数。 您收到错误可能是因为编译器无法找到包的确切声明。

【讨论】:

以上是关于ORA-06508: PL/SQL: 在包 AR_RECEIPT_API_PUB 过程中找不到正在调用的程序单元的主要内容,如果未能解决你的问题,请参考以下文章

ORA-06508 调用远程数据库上的过程时

创建包的问题

PL/SQL 包 - 在包中调用过程

警告:在 plsql 中创建包体时出现编译错误...

PL/SQL 包编译错误:PLS-00323

PL/SQL:子程序或游标“P_STATUS_UPDATE”在包规范中声明,并且必须在包主体中定义