Spring integration 使用存储过程出站通道适配器处理参数

Spring integration 使用存储过程出站通道适配器处理参数,spring-integration,Spring Integration,我在我的项目中使用Spring集成。我有一个奇怪的情况需要处理。当我连接到DB2数据库时,我的存储过程不会返回任何结果。因此,我使用了int-jdbc:stored-proc-outbound-channeladapter和int:publish-subscribe-channel来执行存储过程并继续执行流程 现在,Oracle数据库中的同一存储过程返回一些结果。因此,使用int-jdbc:stored-proc-outbound-channel adapter执行Oracle存储过程会导致问题

我在我的项目中使用Spring集成。我有一个奇怪的情况需要处理。当我连接到DB2数据库时,我的存储过程不会返回任何结果。因此,我使用了
int-jdbc:stored-proc-outbound-channeladapter
int:publish-subscribe-channel
来执行存储过程并继续执行流程

现在,Oracle数据库中的同一存储过程返回一些结果。因此,使用
int-jdbc:stored-proc-outbound-channel adapter
执行Oracle存储过程会导致问题,因为它需要定义一个额外的参数,即
OUT

ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to ZSPPQINSERTUSERIDBA
是否有任何方法可以为
int jdbc:stored proc outbound channel adapter
定义
OUT
参数,以便Oracle存储过程在执行时不会出现任何问题

另外,如果
int jdbc:stored proc outbound channel adapter
没有返回任何内容,我最不担心的是,存储过程应该使用
OUT
参数成功执行

有没有办法处理这种情况

更新

以下是我的Oracle存储过程:

create or replace
PROCEDURE ZSPPQINSERTUSERIDBA (

         P_USERID           char,
         P_BUSINESSAREA     char,
         P_SELECTEDIND      char,
         P_DEFAULTIND       char,
         P_LEGACYSYSTEM     char,
         P_LEGACYLOGIN      char,
         P_LEGACYPASSWORD   char,
         P_OTHERLOGIN       char,
         P_OTHERPASSWORD    char,
         P_ADDSECURLOGIN    char,
         P_ADDSECURPASSWORD char,
         P_LASTUPDATEUSERID char,
         P_LASTUPDATE       char, cur OUT SYS_REFCURSOR)

AS
BEGIN

OPEN cur FOR SELECT * from USERBUSINESSAREA
where (USERID       =  P_USERID
AND      BUSINESSAREA   =  P_BUSINESSAREA);

INSERT 
INTO    USERBUSINESSAREA    
        (
            USERID,
            BUSINESSAREA,
            SELECTEDIND,
            DEFAULTIND,
            LEGACYSYSTEM,
            LEGACYLOGIN,
            LEGACYPASSWORD,
            OTHERLOGIN,
            OTHERPASSWORD,
            ADDSECURLOGIN,
            ADDSECURPASSWORD,
            LASTUPDATEUSERID,
            LASTUPDATE
        )

VALUES  ( P_USERID,
          P_BUSINESSAREA,
          P_SELECTEDIND,
          P_DEFAULTIND,
          P_LEGACYSYSTEM,
          P_LEGACYLOGIN,
          P_LEGACYPASSWORD,
          P_OTHERLOGIN,
          P_OTHERPASSWORD,
          P_ADDSECURLOGIN,
          P_ADDSECURPASSWORD,
          P_LASTUPDATEUSERID,
          P_LASTUPDATE);

END;

正如在以下章节中所描述的:


谢谢你的回复。配置
OUT
参数后,我仍然会收到相同的错误。仅供参考,对于Oracle,我的
OUT
参数是返回
ResultSet
的游标。但是,对于DB2,不会返回
ResultSet
。现在有什么想法吗?所以,您需要两个单独的适配器定义—Oracle和DB2。考虑通过代码>配置文件< /代码>切断它们。为了正确地定义参数,我们需要知道Oracle过程的签名。也许它是一个
函数
,它确实返回了
…这只是一个XML名称空间前缀。当然,对于特定的模式位置,您必须使用配置中定义的。OK。在不返回结果集的情况下尝试
。这在存储的proc出站通道适配器上确实不可用。很抱歉
<int-jdbc:sql-parameter-definition name="YOUR_OUT_PARAM" direction="OUT"/>
<int-jdbc:sql-parameter-definition name="CUR" direction="OUT" type="#{T(oracle.jdbc.OracleTypes).CURSOR}" />