Hibernate调用带有输入参数,输出参数为cursor的存储过程
一.Oracle创建表及存储过程
1.创建表T_MONITOR_DEVICE
创建后的表结构

2.创建存储过程
create or replace procedure ProcTestNew(v_monitordeviceid in number,curdata out sys_refcursor )
As begin open curdata for
select ID, IP,PORT from T_MONITOR_DEVICE where id=v_monitordeviceid;--带参数测试
-- select ID, IP,PORT from T_MONITOR_DEVICE;
end ProcTestNew;
二.java程序中调用
public void TestProc()
{
Connection conn=null;
ResultSet rs=null;
try {
//this.getSession()为hibernate中的Session对象
conn = SessionFactoryUtils.getDataSource(this.getSession().getSessionFactory()).getConnection();
CallableStatement proc = conn.prepareCall("{call ProcTestNew(?,?) }");
BigDecimal b1 = new BigDecimal(1176);
proc.setBigDecimal(1, b1);
proc.registerOutParameter(2, OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet) proc.getObject(2);
MonitorDevice m=new MonitorDevice();
while(rs != null && rs.next())
{
m.setId(Integer.valueOf(rs.getObject(1).toString()));
m.setIp((String)rs.getObject(2));
m.setPort((String)rs.getObject(3));
System.out.println(m.getId()+","+m.getIp()+","+m.getPort());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
控制台输出后的结果

三.注意问题
1.CallableStatement 输入参数的set是从1开始的,同理输出参数的获取也是从1开始的
2.存储过程中输入参数为number类型的,在java程序中,对应的参数为BigDecimal,程序中存储过程放进参数用setBigDecimal(),输入参数为VARCHAR2()类型的,java对应的参数为String,程序中的存储过程set参数用setString()方法
Hibernate调用带有输入参数,输出参数为cursor的存储过程的更多相关文章
- java Servlet+mysql 调用带有输入参数和返回值的存储过程(原创)
这个数据访问的功能,我在.NET+Mysql .NET+Sqlserver PHP+Mysql上都实现过,并且都发布在了我博客园里面,因为我觉得这个功能实在是太重要,会让你少写很多SQL语句不说,还 ...
- mybatis入门系列二之输入与输出参数
mybatis入门系列二之详解输入与输出参数 基础知识 mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...
- JavaWeb_(Mybatis框架)输入和输出参数_五
系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...
- BackgroundWorker 的输入、输出参数、进度条与文字刷新、取消机制、返回事件
1. 定义全局变量 BackgroundWorker backgroundwoker; 2. 点击开始按钮或其它时机初始化 backgroundwoker = new BackgroundWorker ...
- matlab Tricks(二十七)—— 可变输入参数输出参数的适配
matlab 内置的对 varargin/varargout(nargin/nargout)的支持,使得 matlab 的输入参数和输出参数,有了更为灵活的传递和使用: 比如对于 matlab 原生支 ...
- MyBatis - 输入和输出参数
基础知识 mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回值是一个对象的集合,@resultType中只能写该对 ...
- jdbc调用mysql存储过程实现代码带有输入和输出
转载自 http://www.jb51.net/article/34747.htm 1. 创建存储过程 建立一个MySQL的存储过程 add_pro 复制代码代码如下: delimiter // dr ...
- 关于vs调用数据库存储过程 返回输出参数的一些总结
1.直接上练习的存储过程,方便回想 create proc proc_output @totlecount int output, @pageIndex int, @pageSize intas de ...
- asp.net 存储过程 输出参数 取不到值
这是MSDN上的明确解释:当您将 Command 对象用于存储过程时,可以将 Command 对象的 CommandType 属性设置为 StoredProcedure.当 CommandType 为 ...
随机推荐
- implemented loader.php
http://stackoverflow.com/questions/11787176/manage-url-routes-in-own-php-framework This is how i imp ...
- HYBControllerTransitions中文文档
中文文档 HYBControllerTransitions是自定义围场动画API封装类库,使用简便.使用者不需要了解太多转场动画知识,即可轻松接入项目使用. 这是一个给开发者们提供自定义push.po ...
- [iOS Animation]-CALayer 视觉效果
视觉效果 嗯,圆和椭圆还不错,但如果是带圆角的矩形呢? 我们现在能做到那样了么? 史蒂芬·乔布斯 我们在第三章『图层几何学』中讨论了图层的frame,第二章『寄宿图』则讨论了图层的寄宿图.但是图层不仅 ...
- 关于LCD以及BMP和RGB565
源: 关于LCD以及BMP和RGB565
- mysql 数据库 切表的脚本
#!/bin/sh host=$1 port=$2 host=${host:="localhost"} #host没赋值,那么就赋值为localhost port=${port: ...
- MYSQL 主从服务器配置工作原理
一. 主从配置的原理: Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instanc ...
- S3C2440启动代码2440init.s彻底解析
可以选择nand启动和nor启动,这两者之间的关系通过一个按键来选择 这个OM0有何玄机,在数据手册中有这么一段 位宽RAM启动了(当然,还得设置一些东西,下面就说), Nanaflash启动经历的过 ...
- CABasicAnimation 基本动画 分类: ios技术 2015-07-16 17:10 132人阅读 评论(0) 收藏
几个可以用来实现热门APP应用PATH中menu效果的几个方法 +(CABasicAnimation *)opacityForever_Animation:(float)time //永久闪烁的动画 ...
- iOS搜索框UISearchBar 分类: ios技术 2015-04-03 08:55 82人阅读 评论(0) 收藏
当你在seachBar中输入字母之前的时候,只是用鼠标选中searchBar的时候,如图 终端输出截图如下:(这个时候调用先shouldBeginEditing,之后调用didBeginEditing ...
- 安卓 ArrayList,LinkedList,HashSet,Vector,TreeSet的区别和使用
java的集合就那么几种 总体为:List,Set,Map (都是接口由其子类去实现具体的方法) ArrayList,LinkedList,Vector都属于List List:元素是有顺序的,元素可 ...