- 浏览: 223807 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (244)
- java (23)
- java多线程 (7)
- 综合 (1)
- oracle10g (24)
- div+css (1)
- Flex (27)
- java Nio (1)
- java设计模式 (8)
- struts2 (10)
- spring3.0 (5)
- SSH (9)
- dwr (5)
- hibernate3.6 (17)
- dom4j (1)
- sql优化 (5)
- Quartz任务调度框架 (1)
- AOP (3)
- JavaScript (18)
- jquery (3)
- JSF (9)
- ruby (1)
- 正则表达式 (1)
- 明日准备 (2)
- eclipse (3)
- gvim (1)
- CMS (1)
- linux (6)
- 杂 (4)
- java 设计模式 (1)
- MySql (10)
- JBPM (4)
- JSP技术 (1)
- Mybatis And Ibatis (2)
- 经验之谈 (10)
- WebService (1)
- java分布式(高性能,高可用,可伸缩) (0)
- springMvc (2)
- redis (0)
- ant (1)
- Nutz (6)
- 配置管理 (0)
- css+div (1)
- eChars (1)
- angularJs (1)
- D3 (3)
- Scala (1)
最新评论
-
Cobain_LI:
Cobain_LI 写道学习了,之前一直都没注意到有这样的问题 ...
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
Cobain_LI:
Cobain_LI 写道学习了,之前一直都没注意到有这样的问题 ...
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
Cobain_LI:
有个小失误,144和147行多了两个花括号
js面向对象2--js中工厂模式的演化(重要,详细) -
Cobain_LI:
学习了,之前一直都没注意到有这样的问题
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
YTT1121:
有网络拓扑发现的源代码么,或者您会编写么?可以有偿求购,搞科研 ...
flex 之twaver1--简单网络拓扑实现
注:原创作品,转载请注明出处。
曾一度认为oracle的函数和存储过程的区别,就是function能返回值,存储过程不能返回值。但在项目中的很多存储过程都有返回值,仔细发现得出问题的窍门。
存储过程的返回值是通过参数实现的,存储过程的参数有三种类型一种是 in,一种是 out
一种是既有in也有out类型。 out的参数就是返回数值的参数。
下面是实例
本实例需要环境:
1,hibernate3.0
2,oracle 10g
3,创建一个TBL_ADDRESS,字段有id,name,info,remark且有一条记录
java代码:
下面是oracle的存储过程
/*创建存储过程,该存储过程三个参数,前两个是输出参数
最后一个是输入参数*/
曾一度认为oracle的函数和存储过程的区别,就是function能返回值,存储过程不能返回值。但在项目中的很多存储过程都有返回值,仔细发现得出问题的窍门。
存储过程的返回值是通过参数实现的,存储过程的参数有三种类型一种是 in,一种是 out
一种是既有in也有out类型。 out的参数就是返回数值的参数。
下面是实例
本实例需要环境:
1,hibernate3.0
2,oracle 10g
3,创建一个TBL_ADDRESS,字段有id,name,info,remark且有一条记录
java代码:
package com.supan.test; import com.supan.dao.imp.UserDaoImp; public class hibernate1 { public static void main(String[] args) { UserDaoImp udi = new UserDaoImp(); udi.getUserNameAndInfo(); } }
package com.supan.dao.imp; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; import org.hibernate.jdbc.Work; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.supan.dao.UserDao; public class UserDaoImp extends HibernateDaoSupport implements UserDao { public void getUserNameAndInfo() { //没有spring的注入,只有人工苦逼的注册sessionFactory属性 Configuration cof = new Configuration().configure(); this.setSessionFactory(cof.buildSessionFactory()); //定义存放结果的结果map final Map<String,String> result = new HashMap<String, String>(); getHibernateTemplate().execute(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { session.doWork(new Work() { @Override public void execute(Connection conn) throws SQLException { CallableStatement proc = null; try { proc = conn.prepareCall("{call PROC_GETUSER_NAME_AGE(?,?,?)}"); //注意:这里是注册输出参数 proc.registerOutParameter(1, java.sql.Types.VARCHAR); proc.registerOutParameter(2, java.sql.Types.VARCHAR); //注意:这里是传递输入参数 proc.setLong(3, 1L); //执行存储过程 proc.execute(); //获取执行完的存储过程的返回值 result.put("name", proc.getString(1)); result.put("age", proc.getString(2)); } catch(Exception e) { //logger.error("访问数据库失败"); e.printStackTrace(); result.put("name", null); result.put("age", null); } finally { if(null != proc) { proc.close(); } } } }); return null; } }); System.out.println(result.get("name")); System.out.println(result.get("age")); } }
下面是oracle的存储过程
/*创建存储过程,该存储过程三个参数,前两个是输出参数
最后一个是输入参数*/
create or replace procedure PROC_GETUSER_NAME_AGE(userName out varchar2, userAge out varchar2, userId in long) AS --声明该存储过程为“自治事物单元” PRAGMA AUTONOMOUS_TRANSACTION; --定义两个变量 v_userName varchar2(255); v_userAge varchar2(255); begin select name, info into v_userName, v_userAge from TBL_ADDRESS t where t.id = userId; userName := v_userName; userAge := v_userAge; --注意最后并没有return语句返回,返回靠的是输出参数 end;
发表评论
-
oracle 取日期字段的年月日。
2015-06-01 20:19 2031-- Create table create table O ... -
oracle查询一个表的所有分区的名字及所在的表空间
2015-04-04 13:03 1627从USER_TAB_PARTITIONS这个数据库字典表中查询 ... -
oracle表分区详解(转载)
2015-04-04 10:40 536特别注明:该博文转自:http://tianzt.blog.5 ... -
oracle执行计划详解
2015-03-29 09:53 498一.相关的概念 Rowid ... -
取色器 转码器
2014-12-07 15:34 502很好用的取色器 -
sql分组可以按照多个字段分组
2014-12-03 23:38 1050--创建学生表 create table student(s ... -
Oracle二:insert delete update returning into句式
2014-12-01 23:02 1047功能:插入,删除,更新返回操作的记录字段,赋值到变量。 注意: ... -
oracle一:oracle创建表空间,创建用户,分配权限
2014-12-01 22:10 619--第一步:用sql developer或sql plus的s ... -
struts导出excel并下载
2014-11-19 12:42 374Action中处理,包含下载中文文件乱码、为空的问题。 ... -
contentType
2014-11-19 12:36 555附:contentType类型. 'ez' => 'ap ... -
开发小工具
2014-10-11 22:36 421firebug1.12 适合 firefox17-20 -
处理web请求与响应的编码方式统一
2014-09-27 19:04 1747统一处理web请求与响应的编码方式即使防止出现乱码问题 ... -
web安全经验之谈1--关闭登陆页面的自动填充功能
2014-09-27 17:51 758一:浏览器都有自动保存用户输入数据和自动填充数据的能力。为了保 ... -
项目中关于配置文件中密码的加密处理
2014-08-08 23:32 5996注:原创作品,转载请注明出处。 在项目中,为了项目 ... -
oracle创建用户,创建表空间,分配权限。
2014-08-03 19:15 662注:原创作品,转载请注明出处。 --1.首先用scott( ... -
不断刷新页面的session超时控制
2014-08-03 18:53 2432注:原创作品,转载请注明出处 解决方案: 1,在页面元素加 ... -
Spring创建bean的scope选择
2014-08-03 16:03 1471注:原创作品,转 ... -
hibernate 的sqlQuery对象可以操作非映射的数据库表
2014-05-23 01:17 1112注:原创作品,分享以供交流学习,转载请注明出处。 一直 ... -
hibernate sql查询 标量,实体查询
2014-05-11 23:10 889注:原创作品,分享以供交流学习,转载请注明出处 本博文实例假 ... -
hibernate hql查询 select 语句 和 from语句
2014-05-11 21:37 3973注:原创作品,分享以 ...
相关推荐
在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...
在hibernate中调用oracle中的存储过程的详细代码。可以借鉴使用,帮助学习。
下面将详细解释Hibernate调用存储过程的相关知识点。 1. **存储过程的概念** 存储过程是预编译的SQL语句集合,存储在数据库服务器中,可以接受参数、返回结果并执行特定的数据库操作。它们提高了数据库性能,减少...
本文将深入探讨如何使用Hibernate调用存储过程,并结合提供的资源文件——`proc.sql`、`hibernateProc.sql`和`hibernateProc.java`,来阐述具体的操作步骤和注意事项。 首先,我们理解存储过程的意义。存储过程可以...
总结来说,Hibernate调用存储过程是通过`StoredProcedureQuery`对象实现的,提供了更简便的对象化API。对比JDBC,Hibernate更注重开发者体验,而JDBC则更适合对数据库操作有深度控制的需求。在实际开发中,根据项目...
本文将详细介绍如何使用Hibernate调用存储过程,包括不带参数返回值的存储过程和带参数返回值的存储过程。 1、调用不带参数返回值的存储过程 在提供的代码示例中,`doInHibernate` 方法展示了如何使用Hibernate...
在Java的持久化框架Hibernate中,调用数据库的存储过程是一项常见的需求。本文将深入探讨在Hibernate3中如何实现这一功能,以及相关的知识点。 一、为什么要使用存储过程 存储过程是预编译的SQL语句集合,它们在...
结合Spring和Hibernate,你可以在Spring的Service层使用Hibernate的Session来调用存储过程,或者在Repository层通过JdbcTemplate或NamedParameterJdbcTemplate进行调用。具体选择哪种方式取决于你的项目结构和需求。...
总之,Hibernate不仅支持简单的ORM操作,还提供了调用存储过程和定义命名SQL查询的能力,使得开发者可以灵活地处理各种数据库交互需求,提高代码的灵活性和可维护性。在实际开发中,理解并熟练掌握这些特性,将有助...
Java-Hibernate 调用 MySQL 过程和函数的方式知识 Java-Hibernate 框架中调用 MySQL 数据库中的过程和函数是通过 CallableStatement 对象来实现的。下面将详细介绍如何调用 MySQL 中的过程和函数。 调用函数 在 ...
总的来说,Hibernate调用Oracle函数涉及到了数据库设计、ORM框架的使用、原生SQL查询和结果映射等多个方面,熟练掌握这些技能对于开发高质量的企业级应用至关重要。希望这篇文章能帮助你更好地理解和应用这些知识。
- 使用Hibernate调用存储过程可以保持代码的统一性,但也可能导致封装性降低,因为存储过程的逻辑不再完全在Java代码中。 - 在处理大量数据或性能敏感的场景下,使用存储过程可能带来性能提升。 综上所述,...
以下是Java-Hibernate调用MySQL过程和函数的详细步骤: 1. **调用函数** - 函数调用通常涉及到返回值和可能的输入参数。例如,调用名为`get_pname`的函数,该函数可能接受三个参数。使用`CallableStatement`创建一...
下面将详细介绍如何在Java中利用Hibernate调用MySQL的存储过程和函数。 首先,我们需要理解CallableStatement接口,它是PreparedStatement的子接口,用于执行SQL存储过程。在Java中,我们通常使用CallableStatement...
- 如果存储过程没有返回值,只需要调用`execute`方法,无需使用`list`方法。 - 当传递参数时,注意参数的位置(通常是从1开始),并且确保参数类型与存储过程定义的参数类型匹配。 总的来说,Hibernate提供了多种...
### Hibernate调用存储过程的方法 在Java开发中,Hibernate是一个非常强大的对象关系映射(ORM)框架,它简化了数据库操作,并提供了丰富的API来处理各种数据访问需求。其中一个常见的应用场景是通过Hibernate调用...
- **ORM框架**:Object-Relational Mapping(ORM)框架如Hibernate和Entity Framework也支持调用存储过程,开发者可以在ORM的映射配置中指定存储过程,然后在代码中像调用普通方法一样调用它。 3. **参数传递** -...
如果存储过程有多个输出参数或返回值,可以使用`NHibernateUtil`类的`GetType`方法指定输出参数的类型,并在调用后通过`GetResult`或`GetScalar`方法获取结果。 总结,调用存储过程在NHibernate中是一个实用的功能...
Hibernate调用Oracle存储过程 Hibernate框架支持直接调用存储过程,通过配置映射文件或注解实现。 ##### 2. Java直接调用Oracle存储过程 使用Java JDBC API可以直接调用Oracle存储过程,通过`CallableStatement`...