ibatis中如何调用出参为游标的存储过程

1)创建出参为游标的存储过程

--创建一个产品合作伙伴的package

create or replace package XXX.product_partner_proc is

-- Author  : XXX

-- Created : 2014/11/11 9:39:29

-- Purpose : XXX

-- Public function and procedure declarations

type T_CURSOR is ref cursor;

procedure get_sale_partner_um_code(p_partner_code IN VARCHAR2,

re_cursor   OUT T_CURSOR );

end product_partner_proc;

create or replace package body product_partner_proc is

PROCEDURE get_sale_partner_um_code(p_partner_code IN VARCHAR2,re_cursor  OUT T_CURSOR) IS

BEGIN

OPEN re_cursor FOR

SELECT distinct company_code as um_code

FROM assistance_company;

EXCEPTION

WHEN OTHERS THEN

OPEN re_cursor FOR

SELECT ‘‘ um_code FROM dual WHERE 1 = 2;

END get_sale_partner_um_code;

end product_partner_proc;

GRANT EXECUTE ON XXX.product_partner_proc TO prodopr;

2)ibatis配置:注意事项是,对应的参数要和存储过程中对应

<resultMap id="accountResult" class="AgentDTO">

<result property="account" column="um_code"/>

</resultMap>

<parameterMap id="partnerAccountParam" class="java.util.Map">

<parameter property="p_partner_code" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />

<!-- parameter在配置是不要换行,换行可能会有问题 -->

<parameter property="re_cursor" jdbcType="ORACLECURSOR"

javaType="java.sql.ResultSet" mode="OUT" resultMap="accountResult"/>

</parameterMap>

<procedure id="queryPartnerAccouts" parameterMap="partnerAccountParam">

{call proddata.product_partner_proc.get_sale_partner_um_code(?,?)}

</procedure>

3)java代码调用::注意事项是,对应的参数要和存储过程中对应

public List<AgentDTO> queryPartnerAccouts(String partnerCode) throws PafaDAOException {

try {

Map<String, Object> paramMap = new HashMap<String, Object>();

List cursorList = new ArrayList();

paramMap.put("p_partner_code", partnerCode);

paramMap.put("re_cursor", cursorList);

super._queryForObject("queryPartnerAccouts", paramMap);

List<AgentDTO> list = (List<AgentDTO>) paramMap.get("re_cursor");

return list;

} catch (Exception e) {

}

}

时间: 2024-12-20 07:08:29

ibatis中如何调用出参为游标的存储过程的相关文章

ibatis中如何调用存储过程

1)sqlmap.xml中的配置如下: 需要注意的事项: a) parameterMap 中对应的属性property的值要和存储过程中的名字一样,并且对应的顺序要和存储过程中的顺序一致, 否则可能无法获取对应的返回值: <!-- 调用packaget的存储过程的参数 --> <parameterMap id="proProductDzProcParam" class="java.util.Map"> <parameter proper

使用filter获取http请求的出参以及入参

首先 我们的目的是做一个拦截器 能够对http请求做profiler,能够记录本次的调用情况,这里说下如何从http请求中获取到出参的问题. 方案一:参照http://blog.csdn.net/wuhenzhangxing/article/details/53079458 该方案中,使用了HttpServletResponseWrapper,也就是HttpServletResponse的装饰器,相当一是一个代理,当业务中对response做写入的时候,会被装饰器拦截下来做个处理,比如输出到另外

php调用oracle带有out参数的存储过程

//入参$in1 = '2017-01-01'; //必填$in2 = '2017-08-01'; //必填$in3 = ''; //选填 $tns = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = dbname) (SID = dbname)))';$conn = oci_connect ('user' , 'password'

Android(java)学习笔记119:继承中父类没有无参构造

1 /* 2 如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢? 3 报错. 4 如何解决呢? 5 A:在父类中加一个无参构造方法 6 B:通过使用super关键字去显示的调用父类的带参构造方法 7 C:子类通过this去调用本类的其他构造方法 8 子类中一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化. 9 10 注意事项: 11 this(...)或者super(...)必须出现在第一条语句上. 12 如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化,所以

mysql存储过程出参入参,sqlserver很熟悉的一件事到mysql,捣鼓了大半天。记录一下提醒自己。勿看

create PROCEDURE myTestProcname(in score int ,out result varchar(100))BEGINIF score>60 THENset result='yes';ELSEset result='no';END if; END 调用 CALL myTestProcname(50,@result); select @result //为了看下出参结果 附带转来的一点语法 一.创建存储过程1.基本语法:create procedure sp_nam

JDBC和Ibatis中的Date,Time,Timestamp处理

在此前,遇到过使用Ibatis操作Oracle时时间精度丢失的问题,昨天又遇到JDBC操作MySQL时间字段的问题,从网上看到各种式样的解释这些问题的博文/帖子,但多是雾里看花,不得要领. 理解JDBC中的时间类型 MySQL与JDBC之间的类型映射 Oracle与JDBC之间的类型映射 Ibatis是怎么处理日期时间类型的 注释 参考资料 理解JDBC中的时间类型 java.sql包中包括三个类,Date, Time, 和 Timestamp,分别用来表示日期(无时间信息,eg: YYYY-M

通过this()调用有参构造方法

使用原因:在通过无参构造方法实例化对象时,如果有属性可以设置默认值,可通过在无参构造方法中使用this()调用有参构造方法. this()需要写在无参构造方法的第一行! 例子:在没有给出小猫的名字和爪子个数是:默认名字是小喵,爪子个数4个. public class Cat {    String name;    int paw; public Cat(String name,int paw){ this.name = name;        this.paw = paw;    }    

Unity在Android和iOS中如何调用Native API

本文主要是对unity中如何在Android和iOS中调用Native API进行介绍. 首先unity支持在C#中调用C++ dll,这样可以在Android和iOS中提供C++接口在unity中调用.利用这一特性,可以扩展unity的功能.例如集成和调用第三方库.同时为了满足对unity接口的一致性,可以考虑在android和iOS上提供相同的接口供C#调用. 这里列举以下两个例子. 1. 1. 以弹出一个覆盖部分屏幕的webview为例来说明如何从C#调用Native接口. 2. 2. 简

Jquery在unload中成功调用Jquery的.ajax方法

因为页面要求,需要在页面跳转的时候做一些数据的保存工作,试了很多次,发现Jquery的unload事件中调用.ajax方法,在FireFox中可以顺利执行,但是在Chromium下却返回了textStatus为error的消息.试验过很多方法,例如在页面离开时弹出确认框,这样虽然返回了error消息,但是数据库显示操作执行完毕.将确认框除去后,数据库依然没有响应. 查阅多方资料后,发现是以为.ajax的异步响应问题,把ajax请求改为同步的,问题解决. 代码如下: 1 $(window).unl