`

ibatis 调用存储过程返回游标问题

阅读更多
存储过程:
create or replace procedure P_search(weight_value in integer, p_cursor out types.searchNature_CURSOR) as
begin
  open p_cursor for
    select globalId
      from (select sum(WEIGHT) as w, globalId
              from EMPI_TEMP
             group by globalId
             order by sum(WEIGHT) desc)
     where w > weight_value;

end P_search;


sqlMap.xml:

<parameterMap id="test_map" class="java.util.HashMap">
<parameter property="weight_value" jdbcType="INTEGER"
javaType="java.lang.Integer" mode="IN" />
<parameter property="p_cursor" jdbcType="ORACLECURSOR"
javaType="java.sql.ResultSet" mode="OUT"/>
</parameterMap>
<procedure id="query_search" parameterMap="test_map" resultClass="java.lang.String">
{call p_search(?,?)}
   </procedure>

java:

SqlMapClient client =  IBatisConfig.getSqlMapper();
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("weight_value", 30);
        try { 
            List<String> list = client.queryForList("query_search",map);
            System.out.println(list.size());
        }
        catch (SQLException e) {
         
        }


使用 ibatis 2.1.6 版本执行有问题。搞了半天。发现时这个版本对存储过程支持有问题。
换成 2.3.4 问题解决。
分享到:
评论

相关推荐

    ibatis调存储过程返回游标

    ### iBatis调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以接受输入参数,执行一系列操作,并返回一个或多个输出结果。当需要频繁执行复杂的数据库操作时,使用...

    Ibatis调用Oracle存储过程返回自定义类型

    #### 使用Ibatis调用存储过程 Ibatis是一个Java持久层框架,它能够简化Java应用程序与数据库之间的交互。为了调用上述存储过程并正确处理返回值,我们需要进行以下配置: ##### 日志配置(log4j.properties) ```...

    ibatis调用oracle的函数,存储过程的方法 IN 和OUT /游标

    在iBatis中,当存储过程返回一个游标时,你可以将其映射为一个Java List。为此,你需要在Java方法中声明一个List类型的参数,而在SQL映射文件中,使用`&lt;resultMap&gt;`定义一个结果集映射,然后在`&lt;selectResult&gt;`标签...

    Ibatis.net+ oracle 简单事例

    对于Oracle,可能需要利用其特有的函数或特性,如PL/SQL存储过程、游标等。 3. **SQL映射接口**:在.NET 类中创建对应的接口,这个接口的方法对应XML文件中的SQL语句,实现业务逻辑与SQL的绑定。 4. **事务管理**...

    ibatis源码

    3. emis05(iBATIS+Oracle).zip:这个项目特别提到了Oracle数据库,表明Ibatis在处理Oracle特定的SQL特性时,如PL/SQL、游标等,依然表现得游刃有余。Ibatis的灵活性使其能够适应各种数据库,包括Oracle、MySQL、SQL ...

    访问存储过程(或函数)一般以procedure标签来定义statement。

    )}`则是具体调用存储过程或函数的SQL语句。 #### 二、ParameterMap标签定义输入输出参数 对于存储过程或函数来说,它们往往需要与应用程序交互数据。为了实现这一点,IBATIS提供了`parameterMap`标签来定义输入...

    使用ibatis写的小项目

    iBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。iBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。iBatis可以被看作是一个半自动化 ORM(对象关系映射)框架,它对JDBC的操作...

    ibatis 例子

    针对Oracle数据库,`ibatis`支持存储过程调用,可以通过`&lt;procedure&gt;`标签来执行。此外,Oracle的游标、分页、序列等特性也可以方便地在`ibatis`中使用。 10. **最佳实践** 在实际应用中,应遵循良好的设计原则,...

    开发人员结构化面试大纲

    用户可以直接调用这些存储过程来执行预定义的操作。 - **函数**: 相比之下,函数更侧重于接收输入参数并返回一个特定类型的值。它们并不直接涉及对特定用户表的操作。 **事务的概念及其特性** - **事务**: 一系列...

    7种方法连接数据库.doc

    数据库连接是软件开发中至关重要的一个环节,它允许应用程序与各种数据库进行交互,获取和存储数据。本篇文章将详细介绍七种常见的数据库连接方法,包括ODBC API、MFC ODBC、DAO、OLE DB、ADO、JDBC以及JDBC的替代...

Global site tag (gtag.js) - Google Analytics