SOA BPEL开发中序列文件夹未显示所需序列该如何解决
SOA BPEL 序列调用报错解决方案
问题描述
开发SOA BPEL流程时,需要从XML文件读取数据加载到数据库表中,目标表对应的序列可通过SQL正常查询,但未在序列文件夹中展示,转换文件调用序列时系统判定序列不存在,无法生成对应ID的序列值。
可正常执行的序列查询语句
SELECT XXTG_SAMPLE_HEADER_S.nextval FROM DUAL; SELECT XXTG_SAMPLE_LINES_S.nextval FROM DUAL;
现有序列列表展示

原转换文件调用代码
<tns:repairId> <xsl:value-of select="oraext:sequence-next-val ('XXTG_SAMPLE_HEADER_S', 'jdbc/timexappsDataSource')"/> </tns:repairId> <tns:repairLineId> <xsl:value-of select="oraext:sequence-next-val ('XXTG_SAMPLE_LINES_S', 'jdbc/timexappsDataSource')"/> </tns:repairLineId>
解决步骤
- 核对数据源配置的数据库用户权限:确认手动执行SQL用的用户,和
jdbc/timexappsDataSource连接配置的用户为同一个用户,若不是则需要给数据源用户授予序列的查询权限,用序列所属用户执行以下授权语句:
GRANT SELECT ON XXTG_SAMPLE_HEADER_S TO 数据源配置的数据库用户名; GRANT SELECT ON XXTG_SAMPLE_LINES_S TO 数据源配置的数据库用户名;
- 调用函数时补充序列所属schema:如果序列所属schema和数据源用户默认schema不一致,调用
oraext:sequence-next-val时要在序列名前加上schema前缀,修改代码如下:
<tns:repairId> <xsl:value-of select="oraext:sequence-next-val ('[你的序列所属Schema名].XXTG_SAMPLE_HEADER_S', 'jdbc/timexappsDataSource')"/> </tns:repairId> <tns:repairLineId> <xsl:value-of select="oraext:sequence-next-val ('[你的序列所属Schema名].XXTG_SAMPLE_LINES_S', 'jdbc/timexappsDataSource')"/> </tns:repairLineId>
- 刷新SOA元数据缓存:如果权限和命名都没问题,只是序列没有在开发界面的序列文件夹中展示,重启对应SOA托管服务器,刷新元数据缓存后即可正常识别调用。
内容的提问来源于stack exchange,提问作者WashichawbachaW
相关产品推荐
相关产品推荐

