当前位置: 首页 > 知识库问答 >
问题:

SimpleJDBCCALL:读取从存储过程返回的CLOB

西门山
2023-03-14

我有一个使用SimpleJDBCCall调用DB过程的DAO函数。但是,我无法读取存储过程返回的CLOB数据。当我尝试对返回的CLOB值(result.get(“out_rtn_xml”))执行.toString()时,我只在字符串中得到以下内容:oracle.sql.CLOB@f762282a

下面是代码片段。

SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate);
    simpleJdbcCall.withSchemaName(_properties.getPropertyValue("schemaName"));
    simpleJdbcCall.withCatalogName(_properties.getPropertyValue("packageName"));
    simpleJdbcCall.withProcedureName(_properties.getPropertyValue("procedureName"));

    try {
        SqlParameterSource sqlParameterSource = new MapSqlParameterSource()
                .addValue("P_INPUT", input);

        Map<String, Object> result = simpleJdbcCall.execute(sqlParameterSource);
        if(result.get("OUT_RTN_XML") != null) {
            rtnXml = result.get("OUT_RTN_XML").toString();
        }

    } catch(Exception e) {
        e.printStackTrace();
    }

共有1个答案

墨承泽
2023-03-14
if(result.get("OUT_RTN_XML") != null) {                                                 
    Clob clob = (Clob) out.get("OUT_RTN_XML");     
    long len = clob.length();             
    rtnXml = clob.getSubString(1, (int) len);       
}
 类似资料:
  • 我想用SimpleJdbcCall执行带有动态参数的存储过程。在SQL服务器SP中,我总共有6个可选参数,其中我必须能够通过任何参数或不通过任何参数。我的SP在MS Studio中执行得很好。但不是通过SimpleJdbcCall。我尝试了很多方法,其中之一是使用NamedBding。但是它会给“=”附近的输入语法错误,如下所示。 日志: 2019-01-31 18:14:49DEBUG Simp

  • 我有一个存储过程,它接受参数并返回一个长值。 我如何使用jdbcTemplate来调用这个存储过程并获得返回的值。 这样对吗?

  • 本文向大家介绍Python中执行存储过程及获取存储过程返回值的方法,包括了Python中执行存储过程及获取存储过程返回值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python中执行存储过程及获取存储过程返回值的方法。分享给大家供大家参考,具体如下: 在Pathon中如何执行存储过程呢?可以使用如下方法: 存储过程定义基本如下: 1. 使用adodbapi 2. 使用pymssq

  • 问题内容: 我正在尝试从存储过程中获取返回值,但它始终返回0。 C#代码 SP 在所有情况下,它都返回0。我不知道问题所在。 问题答案: 我尝试了类似您的代码,并且可以按预期工作。 但是,您的代码中两次调用ExecuteNonQuery。 首次调用时,将按预期插入记录,然后为返回值添加参数并再次执行命令。但是现在记录已存在,并且存储过程始终落在else块中,因此始终返回零。

  • 问题内容: 我正在使用Spring的JdbcTemplate和StoredProcedure类。我无法让存储过程类为我工作。 我在oracle数据库上有一个存储过程。它的签名是 哪里 我创建了以下存储过程类以从oracle过程获取信息 我在我的一个DAO类中的一种方法中调用此方法 但是,地图的大小始终为0,因此没有任何结果。我知道数据库中有符合我输入条件的行。我也有用于与oracle存储的proc

  • 问题内容: 我正在执行上面的存储过程。我收到以下错误: 消息245,级别16,状态1,过程S_Comp,第8行在将varchar值“存在的Amruthanot”转换为数据类型int时,转换失败。 请帮我解决这个问题 问题答案: 您将结果放在值中,而不是传递的值中。 从MSDN (返回) 是 返回 的整数值。存储过程可以将整数值返回到调用过程或应用程序。 更改您的程序。 调用程序