仗劳勤学网

ibatis中调用存储过程(调用存储过程对象)

本篇目录:

ibatis调用Sybase存储过程问题

1、存储过程的支持也是必要的,和只需简单的一句:CallableStatement cstmt = con.prepareCall(procedure); 就能对已有存储过程的调用。ibatis这我就不多少了,一样,都有很好的支持。

2、现在我的问题是调用存储过程zhouxiaobotest,mStatement.execute()始终是false;而调用zhouxiaobotest2 mStatement.execute()就是true,能得到结果集。

ibatis中调用存储过程(调用存储过程对象)-图1

3、那就是你的存储过程(report_day.report_day_pro)的问题啦,存储过程没有给回其他的返回值呗。。

4、由于存在这二个问题,因此,我建议使用locator的方法来插入、更新或获取LOB的值。

5、使用sybase central来查看。在表名上点右键,选择属性,点“依赖性”按钮,在引用者页面中,下拉列表选择“过程”,就可以看到引用该表的所有存储过程了。

6、我的这个例子就返回了1个结果集。为了使问题表达更加清楚,这些是我简化了的代码,并用此代码进行了调试。并且总结出了问题的规律:先rdr.read(),如果读到了,则后面的ret必然等于0,否则可以拿到返回值。

ibatis中调用存储过程(调用存储过程对象)-图2

Ibatis调用Oracle存储过程

} 备注:由于oracle的存储过程有2种写法,一种是FUNCTION函数,一种是procedure。

index by表不能存储在数据库中的type中,故选择嵌套表。ibatis不支持oracle的复合数据类型的返回。(个人理解)替代方案:用返回oracle游标来代替复合数据类型。ibatis能接受oracle游标类型。

编译SqlMapConfigParser.java生成可运行文件SqlMapConfigParser.class(见附件),并将其覆盖添加到ibatis.jar中。

就能对已有存储过程的调用。ibatis这我就不多少了,一样,都有很好的支持。

ibatis中调用存储过程(调用存储过程对象)-图3

ibaits调用存储过程事例

1、在ibatis的XML文件中,调用的时候,可以写成 CALL $procName$(?)问号部分就是你存储过程的参数。可以定义ParamterMap来存储这个参数。

2、queryForList返回的是List,queryForObject返回的是Object;to LS:ibatis可以调用存储过程。

3、存储过程的支持也是必要的,和只需简单的一句:CallableStatement cstmt = con.prepareCall(procedure); 就能对已有存储过程的调用。ibatis这我就不多少了,一样,都有很好的支持。

4、ibatis和Mybatis对存储过程和函数函数的调用的配置Xml是不一样的,以下是针对Mybatis 2的环境进行操作的。

ibatis调用oracle存储过程返回结果为boolean的问题

1、你通过JDBC这种方式调用存储过程,应该使用 CallableStatement 类, CallableStatement cs=conn.prepareCall(str);补充一句,避免你在执行有错,cs.excuse();这个方法为执行,然后在获取输出参数。

2、问题总结:index by表不能存储在数据库中的type中,故选择嵌套表。ibatis不支持oracle的复合数据类型的返回。(个人理解)替代方案:用返回oracle游标来代替复合数据类型。ibatis能接受oracle游标类型。

3、就是单独的一个返回结果集的select语句。有SQL Server经验的用户会犯此种错误,因为SQL Server中没有这个限制)。其实,这也是PL/SQL语句块的限制。如果需要存储过程返回结果集,那么可以使用游标,也可以使用索引表做返回。

4、注:Oracle 这里的函数,是一个返回游标类型的函数, 不是像 SQL Server 的那种叫 “表值函数” 的东西。因此下面的写法会报错。

到此,以上就是小编对于调用存储过程对象的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

分享:
扫描分享到社交APP
上一篇
下一篇