oracle存储过程学习(二)-调用存储过程和返回结果集
2014-04-04 15:16
465 查看
1.定义包:oracle返回的结果集需要定义一个游标变量,要在包定义
--包名为test
create or replace package test is
-- 定义了游标 和类型,用来返回结果集
type resultCursor is ref cursor;
-- 需要执行的存储过程
procedure PCK_PACT_TYPE(res out resultCursor);
end test;2.实现包里的存储过程,定义包体
@Autowired
private HibernateTemplate hibernateTemplate;
public void procedureTest(){
try
{
//调用包
String sqlStr = "{call test.PCK_PACT_TYPE(?)}";
Session session=SessionFactoryUtils.getSession(hibernateTemplate.getSessionFactory(),true);
Connection conn=session.connection();
CallableStatement cs =conn.prepareCall(sqlStr);
cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
ResultSet rs = (ResultSet) cs.getObject(1);
while (rs.next()) {
//获取数据
System.out.println(rs.getString("pact_type_id"));
System.out.println(rs.getString("pact_type_name"));
}
conn.close();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
--包名为test
create or replace package test is
-- 定义了游标 和类型,用来返回结果集
type resultCursor is ref cursor;
-- 需要执行的存储过程
procedure PCK_PACT_TYPE(res out resultCursor);
end test;2.实现包里的存储过程,定义包体
--包体 create or replace package body test is -- Function and procedure implementations --相当于实现包的接口 procedure PCK_PACT_TYPE(res out resultCursor) is begin open res for select * from crm_pact_type t; return; end; end test;3.调用上述包
@Autowired
private HibernateTemplate hibernateTemplate;
public void procedureTest(){
try
{
//调用包
String sqlStr = "{call test.PCK_PACT_TYPE(?)}";
Session session=SessionFactoryUtils.getSession(hibernateTemplate.getSessionFactory(),true);
Connection conn=session.connection();
CallableStatement cs =conn.prepareCall(sqlStr);
cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
ResultSet rs = (ResultSet) cs.getObject(1);
while (rs.next()) {
//获取数据
System.out.println(rs.getString("pact_type_id"));
System.out.println(rs.getString("pact_type_name"));
}
conn.close();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- 数据库自动备份脚本
- 杰奇登录后的东西都是在session里面的
- ASP程序与SQL存储过程结合使用详解
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ORACLE LATERAL-SQL-INJECTION 个人见解
- Oracle Connect to Idle Instance解决方法
- oracle sys_connect_by_path 函数 结果集连接