mybaits调用oracle过程时报错 java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1 100
mybaits的dao层的XML部分<!--获取单据明细商品名称参数Map--><parameterMaptype="java.util.Map"id="getGoods...
mybaits的dao层的XML部分
<!-- 获取单据明细商品名称参数Map -->
<parameterMap type="java.util.Map" id="getGoodsNameMap">
<parameter property="in_goodsid" javaType="String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="in_supid" javaType="String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="out_goodsname" javaType="String" jdbcType="VARCHAR" mode="OUT"/>
</parameterMap>
<!-- 通过商品编码获取商品名称 -->
<select id="getGoodsName" statementType="CALLABLE" parameterMap="getGoodsNameMap" >
{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;
}
报错
16:15:54,040 INFO [STDOUT] 16:15:54,039 ERROR [Dispatcher] Exception occurred during processing request:
### Error querying database. Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
网上都说是因为与数据库的数据类型对应不对,可是我都检查好多遍了 没发现问题 求解
goodsid与gysid我也打印出来了 不是空值 真不知道是什么问题了, 求大神指点
附上oracle中的过程头部
--按商品编码取得一个商品名称
PROCEDURE JXC_ACT_GETGOODSNAME(in_goodsid IN oct_doc_detail.goods_id%TYPE, --商品编码
in_supid IN oct_doc_head.gys_id%TYPE,
out_goodsname OUT VARCHAR2 --反回商品名称
) 展开
<!-- 获取单据明细商品名称参数Map -->
<parameterMap type="java.util.Map" id="getGoodsNameMap">
<parameter property="in_goodsid" javaType="String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="in_supid" javaType="String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="out_goodsname" javaType="String" jdbcType="VARCHAR" mode="OUT"/>
</parameterMap>
<!-- 通过商品编码获取商品名称 -->
<select id="getGoodsName" statementType="CALLABLE" parameterMap="getGoodsNameMap" >
{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;
}
报错
16:15:54,040 INFO [STDOUT] 16:15:54,039 ERROR [Dispatcher] Exception occurred during processing request:
### Error querying database. Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
网上都说是因为与数据库的数据类型对应不对,可是我都检查好多遍了 没发现问题 求解
goodsid与gysid我也打印出来了 不是空值 真不知道是什么问题了, 求大神指点
附上oracle中的过程头部
--按商品编码取得一个商品名称
PROCEDURE JXC_ACT_GETGOODSNAME(in_goodsid IN oct_doc_detail.goods_id%TYPE, --商品编码
in_supid IN oct_doc_head.gys_id%TYPE,
out_goodsname OUT VARCHAR2 --反回商品名称
) 展开
2个回答
展开全部
map.put("out_goodsname","");
输出参数就不要去设置值了吧。。
输出参数就不要去设置值了吧。。
更多追问追答
追问
也试了的 不设置也还是报这个错
追答
#{in_goodsid,jdbcType=VARCHAR},
#{in_supid,jdbcType=VARCHAR},
#{out_goodsname,mode=OUT,jdbcType=VARCHAR}
把这个几个替换成 ? 试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
追问
是java写的 数据库是oracle oracle中的过程参数是对的啊 没问题的
报错截图上传不了 大概报错就是
### SQL: {CALL EXEC.OCTWPRK.JXC_ACT_GETGOODSNAME(?,?,?)} uncategorized SQLException for SQL []; SQL state [null]; error code [17041];
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询