您的位置:首页 > 编程语言 > Java开发

ibatis调用存储过程:返回NUMBER,对应java类型的解决办法

2012-05-07 17:29 846 查看
我想有很多朋友会像我一样遇到这样的问题

首先,我们创建一个存储过程

create or replace procedure pro_app_test(

p_userid in number,

p_pid out number,

p_paysn out varchar2

) as

BEGIN

p_pid:=123456;

p_paysn := '12323213';

END pro_app_test;

对于我们在存储过程中,返回的是number时,我们在ibatis调用中,应该怎么对应呢..

下面是ibatis中的代码

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

<parameter property="p_userid" jdbcType="NUMBER" javaType="java.lang.Long" mode="IN" />

<parameter property="p_pid" jdbcType="NUMBER" javaType="java.lang.Integer" mode="OUT" />

<parameter property="p_paysn" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" />

</parameterMap>

<procedure id="pro_app_test" parameterMap="pro_app_testMap">

{call pro_app_test(?,?,?)}

</procedure>

一般我们都会这样把p_pid对应起来. 这样肯定会提示错误:无效的列类型: -99999999

我们有两种解决的办法:

一: 从ibatis配置文件中修改:把NUBER修改成INTEGER,这样就可以了

<parameter property="p_pid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT" />

二:存储过程返回类型修改: 把p_pid用做VARCHAR2

create or replace procedure pro_app_test(

p_userid in number,

p_pid out varchar2,

p_paysn out varchar2

) as

BEGIN

p_pid:=123456;

p_paysn := '12323213';

END pro_app_test;

然后ibatis修改成这样:

<parameter property="p_pid" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" />

总结一点: 对于返回number的字段,我们在ibatis里面用jdbcType="INTEGER" 来对应.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: