当数据库升级到 19c 时,无法在 EBS 中部署 rest 服务

Cannot deploy rest service in EBS when DB upgraded to 19c

我们最近在测试实例的 EBS 12.1.3 环境中将我们的数据库从 12c (12.1.0.2.0) 升级到 19c(19.0.0.0.0)。升级后,我无法使用 SOA 休息服务集成存储库部署自定义 Web 服务。我在部署时遇到以下错误:

服务提供商访问在尝试执行 'DEPLOY' 时导致异常 'oracle.apps.fnd.isg.client.IREPException'。请查看服务提供商日志以获取更多详细信息

我查看了日志文件,但未找到任何信息。我注意到一件事,我能够使用简单的输出参数和 VARCHAR2 数据类型来部署 Web 服务。但是当有一个基于 table 类型定义的输出参数时,我收到上述错误。我定义了 table 类型输出参数,其中 returns 数据以 json 数组的形式出现。

类型 XRCL_TMS_PICKED_ORDERS1 是 TABLE 的 ROCELL。XRCL_TMS_PICKED_ORDERS1%ROWTYPE INDEX BY BINARY_INTEGER;

值得一提的是,在使用12c数据库的应用程序上,可以毫无问题地部署web服务。

我通过查找 12c 和 19c 版本数据库中集合类型兼容性的原因解决了这个问题。

在下面的 12c 中,plsql 集合类型的声明工作正常:

TYPE type_name 是 TABLE OF Table_Name%ROWTYPE INDEX BY BINARY_INTEGER;

但是在上面的19c中声明plsql集合类型有如下错误。我在尝试重新编译集合类型后发现了这个错误:

PLS-00355:在此上下文中不允许使用 pl/sql table

在下面的 19c 中,声明工作正常(创建的类型为嵌套 table):

创建类型 type_name 作为对象

( column_name 数据类型 );

创建类型 type_name_nt AS TABLE OF type_name;