mybaits调用oracle过程时报错 java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1

streetboy32 2014-05-30 04:23:28
mybaits的dao层的XML部分

<!-- 通过商品编码获取商品名称 -->
<select id="getGoodsName" statementType="CALLABLE" parameterType="java.util.HashMap" >
{CALL EXEC.OCTWPRK.JXC_ACT_GETGOODSNAME(
#{in_goodsid,jdbcType=VARCHAR},
#{in_supid,jdbcType=VARCHAR},
#{out_goodsname,mode=OUT,jdbcType=VARCHAR}
)}
</select>


Service 层的java部分

// 通过商品编码获取商品名称
public String getGoodsName(String goodsid, String gysid){

Map<String, String> map=new HashMap<String, String>();
map.put("in_goodsid",goodsid);
map.put("in_supid",gysid);
map.put("out_goodsname","");
iDJManageDao.getGoodsName(map);

System.out.println(map.get("in_goodsid"));
String goodsname = map.get("out_goodsname");

return goodsname;

}


oracle过程头部

--按商品编码取得一个商品名称
PROCEDURE JXC_ACT_GETGOODSNAME(in_goodsid IN VARCHAR2 ,
in_supid IN VARCHAR2 ,
out_goodsname OUT VARCHAR2
)


报错:
14:33:49,065 INFO [STDOUT] 14:33:49,063 ERROR [Dispatcher] Exception occurred during processing request:
### Error querying database. Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
### The error may exist in com/inventorymanage/dao/documents/IDJManageDaoMapper.xml
### The error may involve com.inventorymanage.dao.documents.IDJManageDao.getGoodsName-Inline
### The error occurred while setting parameters
### SQL: {CALL EXEC_OCTWORK.JXC_ACT_GETGOODSNAME(?,?,?)}
### Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
; uncategorized SQLException for SQL []; SQL state [null]; error code [17041]; 索引中丢失 IN 或 OUT 参数:: 1; nested exception is java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
org.springframework.jdbc.UncategorizedSQLException:
### Error querying database. Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
### The error may exist in com/inventorymanage/dao/documents/IDJManageDaoMapper.xml
### The error may involve com.inventorymanage.dao.documents.IDJManageDao.getGoodsName-Inline
### The error occurred while setting parameters
### SQL: {CALL EXEC_OCTWORK.JXC_ACT_GETGOODSNAME(?,?,?)}
### Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
; uncategorized SQLException for SQL []; SQL state [null]; error code [17041]; 索引中丢失 IN 或 OUT 参数:: 1; nested exception is java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:364)
at $Proxy928.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:159)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:43)
at $Proxy929.getGoodsName(Unknown Source)
at com.inventorymanage.service.documents.impl.DJManageServiceImpl.getGoodsName(DJManageServiceImpl.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy930.getGoodsName(Unknown Source)
at com.inventorymanage.action.documents.DJManageAction.getGoodsName(DJManageAction.java:131)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocati
14:33:49,066 INFO [STDOUT] on.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)

网上都说是因为与数据库的数据类型对应不对,可是我都检查好多遍了 没发现问题 求解

goodsid与gysid我也打印出来了 不是空值 真不知道是什么问题了, 求大神指点
...全文
757 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
java_xul 2016-10-09
  • 打赏
  • 举报
回复
引用 2 楼 streetboy32 的回复:
自己找到问题了 由于数据库是英文字符集 导致传的参数无法识别为VARCHAR型,换了个中文库就好了.
什么意思?
gunpowder2000 2014-06-04
  • 打赏
  • 举报
回复
这个问题好坑。
streetboy32 2014-06-04
  • 打赏
  • 举报
回复
自己找到问题了 由于数据库是英文字符集 导致传的参数无法识别为VARCHAR型,换了个中文库就好了.
streetboy32 2014-05-30
  • 打赏
  • 举报
回复
居然沉了 求大神解决啊 困惑好多天了

10,606

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧