Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 存储过程出站网关无法执行有效的存储过程_Spring_Spring Integration - Fatal编程技术网

Spring 存储过程出站网关无法执行有效的存储过程

Spring 存储过程出站网关无法执行有效的存储过程,spring,spring-integration,Spring,Spring Integration,我们在项目中使用spring集成。我正在使用intjdbc:storageproc outbound gateway执行一个存储过程。当我使用Spring集成层访问存储过程时,出现了以下错误。但奇怪的是,同一个存储过程从SQL Developer成功执行,并将所需的行插入表中 2016-07-01 11:45:49,254 DEBUG http-0.0.0.0-8080-4 [org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTra

我们在项目中使用spring集成。我正在使用
intjdbc:storageproc outbound gateway
执行一个存储过程。当我使用Spring集成层访问存储过程时,出现了以下错误。但奇怪的是,同一个存储过程从SQL Developer成功执行,并将所需的行插入表中

2016-07-01 11:45:49,254 DEBUG http-0.0.0.0-8080-4 [org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator] Translating SQLException with SQL state '65000', error code '6550', message [ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'ZSPPQINSERTUSERIDBA'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
]; SQL was [{call ZSPPQINSERTUSERIDBA(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}] for task [CallableStatementCallback]
以下是我的
intjdbc:stored proc outbound gateway

<int-jdbc:stored-proc-outbound-gateway
                        id="PQPutUserBAInformation-AWD-StoredProcedure2" 
                        auto-startup="true"
                        data-source="routingDataSource" 
                        stored-procedure-name="ZSPPQINSERTUSERIDBA"
                        skip-undeclared-results="true"
                        ignore-column-meta-data="true"  
                        use-payload-as-parameter-source = "false" 
                        expect-single-result="true" >

                        <int-jdbc:sql-parameter-definition name="P_USERID" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_BUSINESSAREA" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_SELECTEDIND" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_DEFAULTIND" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_LEGACYSYSTEM" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_LEGACYLOGIN" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_LEGACYPASSWORD" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_OTHERLOGIN" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_OTHERPASSWORD" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_ADDSECURLOGIN" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_ADDSECURPASSWORD" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_LASTUPDATEUSERID" direction="IN" type="VARCHAR" />
                        <int-jdbc:sql-parameter-definition name="P_LASTUPDATE" direction="IN" type="VARCHAR" />


                        <int-jdbc:parameter name="P_USERID" expression="#xpath(payload, '//CurrentUserID')" />
                        <int-jdbc:parameter name="P_BUSINESSAREA" expression="#xpath(payload, '//SelectedBusinessArea/Code')" />
                        <int-jdbc:parameter name="P_SELECTEDIND" expression="#xpath(payload, '//SelectedBusinessArea/Selected')" />
                        <int-jdbc:parameter name="P_DEFAULTIND" expression="#xpath(payload, '//SelectedBusinessArea/Default')" />
                        <int-jdbc:parameter name="P_LEGACYSYSTEM" expression="#xpath(payload, '//SelectedBusinessArea/LegacySystem')" />
                        <int-jdbc:parameter name="P_LEGACYLOGIN" expression="#xpath(payload, '//SelectedBusinessArea/LegacyLogin')" />

                        <int-jdbc:parameter name="P_LEGACYPASSWORD" expression="headers.LegacyPassword" />

                        <int-jdbc:parameter name="P_OTHERLOGIN" expression="#xpath(payload, '//SelectedBusinessArea/OtherLogin')" />

                        <int-jdbc:parameter name="P_OTHERPASSWORD" expression="headers.otherPassword" />

                        <int-jdbc:parameter name="P_ADDSECURLOGIN" expression="#xpath(payload, '//SelectedBusinessArea/AddSecurLogin')" />

                        <int-jdbc:parameter name="P_ADDSECURPASSWORD" expression="headers.addSecurPassword" />

                        <int-jdbc:parameter name="P_LASTUPDATEUSERID" expression="#xpath(payload, '//userID')" />
                        <int-jdbc:parameter name="P_LASTUPDATE" expression="#xpath(payload, '//dateTimeStamp')" />

                <int-jdbc:returning-resultset name="rowMapper" row-mapper="com.dsths.cs.awd.utils.ResultSetRowMapper"/>
存储过程如下所示:

create or replace procedure ZSPPQINSERTUSERIDBA
(
    P_USERID in types.char10,
    P_BUSINESSAREA in types.char10,
    P_SELECTEDIND in types.char1,
    P_DEFAULTIND in types.char1,
    P_LEGACYSYSTEM in types.char10,
    P_LEGACYLOGIN in types.char16,
    P_LEGACYPASSWORD in types.char16,
    P_OTHERLOGIN in types.char10,
    P_OTHERPASSWORD in types.char10,
    P_ADDSECURLOGIN in types.char10,
    P_ADDSECURPASSWORD in types.char10,
    P_LASTUPDATEUSERID in types.char10,
    P_LASTUPDATE in types.char26
)
authid current_user
as
    TOTALCNT INTEGER DEFAULT 0 ;

begin
    select count(*) into TOTALCNT 
    from USERBUSINESSAREA 
    where USERID = P_USERID
    and BUSINESSAREA = P_BUSINESSAREA;

    if ( TOTALCNT = 0 )
    then
        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 if;
end; 

有谁能帮我找出这里有什么问题吗?

根据您的
过程zspqinsertuseridba
这只是一个没有任何返回的过程。这就是为什么你的
像是一个错误的额外参数导致了这个错误


>,考虑使用<代码> <代码> -对于Value/Cudio>程序组件,请精确地单向使用.< /P>请共享存储过程definition@ArtemBilan谢谢你的回答。我已经在问题中包含了存储过程定义。谢谢+1.快速响应

create or replace procedure ZSPPQINSERTUSERIDBA
(
    P_USERID in types.char10,
    P_BUSINESSAREA in types.char10,
    P_SELECTEDIND in types.char1,
    P_DEFAULTIND in types.char1,
    P_LEGACYSYSTEM in types.char10,
    P_LEGACYLOGIN in types.char16,
    P_LEGACYPASSWORD in types.char16,
    P_OTHERLOGIN in types.char10,
    P_OTHERPASSWORD in types.char10,
    P_ADDSECURLOGIN in types.char10,
    P_ADDSECURPASSWORD in types.char10,
    P_LASTUPDATEUSERID in types.char10,
    P_LASTUPDATE in types.char26
)
authid current_user
as
    TOTALCNT INTEGER DEFAULT 0 ;

begin
    select count(*) into TOTALCNT 
    from USERBUSINESSAREA 
    where USERID = P_USERID
    and BUSINESSAREA = P_BUSINESSAREA;

    if ( TOTALCNT = 0 )
    then
        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 if;
end;