首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[医][医]地块

[医][医]地块
EN

Stack Overflow用户
提问于 2021-03-19 11:51:08
回答 1查看 271关注 0票数 2

我们希望在基于注释的对oracle函数的调用中获得一个clob字段。此函数返回CLOB字段Oracle。我们有这样的代码:

代码语言:javascript
复制
@Select("{ #{result,  javaType=java.lang.String ,jdbcType = CLOB, mode=OUT } = call pkg_exportacion_datos.f_recupera_dgp_pac( "
        + "#{cipAuto, jdbcType=VARCHAR, mode=IN},#{idExplotacion, jdbcType=NUMERIC, mode=IN} )}")
    @Options(statementType = StatementType.CALLABLE)
@Results(
        value = {
          @Result(
              property = "result",
              column = "result",
              javaType = String.class)
        })
String getListadoDGPPaciente(String cipAuto,long idExplotacion,String result);

我们可以在ClobTypeHandler上调试私有字符串toString( clob )抛出SQLException,并且在这个方法字段中CLOB有一个有效值,但是这个值在变量结果中不返回。内部变量resul设置了一个空值。

有人能帮我吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 14:29:30

该方法应如下所示:

代码语言:javascript
复制
@Update({
  "{#{result,javaType=java.lang.String,jdbcType=CLOB,mode=OUT}",
  "= call pkg_exportacion_datos.f_recupera_dgp_pac(",
    "#{cipAuto,jdbcType=VARCHAR,mode=IN},",
    "#{idExplotacion,jdbcType=NUMERIC,mode=IN}",
  ")}"
})
@Options(statementType = StatementType.CALLABLE)
void getListadoDGPPaciente(ParamBean param);

注意,结果是作为OUT参数返回的,而不是方法返回值。

因此,您应该使用@Update@Insert而不是@Select

要接收OUT参数,方法参数必须是Map或bean,如下所示。

代码语言:javascript
复制
public class ParamBean {
  private String cipAuto;
  private long idExplotacion;
  private String result;
  // getters / setters
}

调用该方法的代码如下所示。

代码语言:javascript
复制
ParamBean param = new ParamBean();
param.setCipAuto("foo");
param.setIdExplotacion(123L);
mapper.getListadoDGPPaciente(param);
return param.getResult(); // returns the CLOB as a String
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66707652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档