Spring 存储过程出站网关无法执行有效的存储过程
我们在项目中使用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
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
这只是一个没有任何返回的过程。这就是为什么你的
像是一个错误的额外参数导致了这个错误
>,考虑使用<代码> <代码> -对于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;