我试了几个,得出结论:
java程序,无法直接用ibatis调动oracle传入clob参数的存储过程,而只能将clob参数插入数据库表的字段,插入时直接传入String参数就可以,所以,标题应该这么解决:
1.将clob字段先插入数据库中建有clob字段的临时表
2.存储过程中从表中将clob字段取出使用。
我的代码如下:
oracle数据库建表:
create table t_temp_sendbatchfj(
rightcodes clob,
errorcodes clob,
clientid varchar2(20),
mainid varchar2(20));
java代码(其中erroecodes和rightcodes都是要使用的clob字段,从ibatis传入时直接传String类型即可传入oracle的clob字段):
Map p_pro = new HashMap();
//由于java无法调用in_clob的存储过程,所以先将clob插入表,然后再从表中取出clob供存储过程用
p_pro.put("errorcodes", errorcodes.toString());
p_pro.put("rightcodes", rightcodes.toString());
p_pro.put("clientid", (String)p.get("clientid"));
p_pro.put("mainid", (String)p.get("mainid"));
dao.g