l 需求描述
当把PL/SQL声明Load到ISG,生成WSDL并部署完毕后,需要修改PL/SQL的包头声明部分。例如修改某个过程的参数类型,再重新Load,重新生成WSDL,重新部署。我们会发现PL/SQL包头声明的变化不会反映到ISG中。我们尝试How To Load a Modified Custom PLSQL Interface in SOA Gateway Integration Repository? [Article ID 1167543.1]中所述方法,这种方法只适用于PL/SQL接口中增加方法,方法中新增参数,减少参数等情况。但假设PL/SQL包的某个方法中有一个参数的类型为Record,而Record中的字段发生了变化,例如增加字段、减少字段,字段名发生变化等,这时[Article ID 1167543.1]中所述方法就不再有效了。
l 解决方案
1. 保存一份PL/SQL包源码,然后将其在数据库中Drop掉。
2. 在ISG中找到对应的集成接口,重新生成WSDL,这时会报错,无需处理,此时后台会自动清除掉接口相关的Objects。
3. 重启OAFM服务。 $ADMIN_SCRIPTS_HOME/adoafmctl.sh stop|start
4. 将修改后的PL/SQL包重新编译到数据库中。
5. 重新Load PL/SQL声明到ISG中。
6. 在ISG中找到对应的集成接口,重新生成WSDL,重新部署。
注意:调用Webservice记录集每个字段的顺序尽量跟Package里建立记录集的字段顺序一致(以减少一些莫名奇妙的错误)。