- 浏览: 5041857 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (2844)
- java (1094)
- hadoop (37)
- jvm (39)
- hbase (11)
- sql (25)
- 异常 (83)
- div css (6)
- 数据库 (95)
- 有趣的code (15)
- struts2 (6)
- spring (124)
- js (44)
- 算法 (65)
- linux (36)
- hibernate (7)
- 中间件 (78)
- 设计模式 (2)
- 架构 (275)
- 操作系统 (91)
- maven (35)
- tapestry (1)
- mybatis (9)
- MQ (101)
- zookeeper (18)
- 搜索引擎,爬虫 (208)
- 分布式计算 (45)
- c# (7)
- 抓包 (28)
- 开源框架 (45)
- 虚拟化 (12)
- mongodb (15)
- 计算机网络 (2)
- 缓存 (97)
- memcached (6)
- 分布式存储 (13)
- scala (5)
- 分词器 (24)
- spark (104)
- 工具 (23)
- netty (5)
- Mahout (6)
- neo4j (6)
- dubbo (36)
- canal (3)
- Hive (10)
- Vert.x (3)
- docker (115)
- 分布式追踪 (2)
- spring boot (5)
- 微服务 (56)
- 淘客 (5)
- mesos (67)
- php (3)
- etcd (2)
- jenkins (4)
- nginx (7)
- 区块链 (1)
- Kubernetes (92)
- 驾照 (1)
- 深度学习 (15)
- JGroups (1)
- 安全 (5)
- 测试 (16)
- 股票 (1)
- Android (2)
- 房产 (1)
- 运维 (6)
- 网关 (3)
最新评论
-
明兜3号:
部署落地+业务迁移 玩转k8s进阶与企业级实践技能(又名:Ku ...
Kubernetes系统常见运维技巧 -
q328965539:
牛掰啊 资料收集的很全面
HDFS小文件处理解决方案总结+facebook(HayStack) + 淘宝(TFS) -
guichou:
fluent挂载了/var/lib/kubelet/pods目 ...
kubernetes上部署Fluentd+Elasticsearch+kibana日志收集系统 -
xu982604405:
System.setProperty("java.r ...
jmx rmi 穿越防火墙问题及jmxmp的替代方案 -
大漠小帆:
麻烦问下,“获取每个Item相似性最高的前N个Item”,这个 ...
协同过滤推荐算法在MapReduce与Spark上实现对比
本文出自 “古道西风 ” 博客,请务必保留此出处http://hzw2312.blog.51cto.com/2590340/748363
package com.boxun.crm.util; import java.sql.CallableStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class DAOUtil { private static DAOUtil instance = null; private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static final ThreadLocal threadLocal = new ThreadLocal(); private static final Configuration cfg = new Configuration(); private static SessionFactory sessionFactory = null; public synchronized static DAOUtil getInstance() { if (instance == null) { instance = new DAOUtil(); try { cfg.configure(CONFIG_FILE_LOCATION); sessionFactory = cfg.buildSessionFactory(); } catch (HibernateException e) { e.printStackTrace(); } } return instance; } public Session getSession() { Session session = (Session) threadLocal.get(); try { if ((session == null) || (!session.isOpen())) { session = sessionFactory.openSession(); threadLocal.set(session); } } catch (HibernateException e) { e.printStackTrace(); } return session; } public void closeSession() { Session session = (Session) threadLocal.get(); threadLocal.set(null); if ((session != null) && (session.isOpen())) { session.flush(); session.close(); } } private String getSqlStr(String fname, int size) { StringBuffer sql = new StringBuffer(); //String call="{? call pro(?,?,?)}"; sql.append("{ ? = call "); sql.append(fname); sql.append("("); for (int i = 0; i < size; i++) { sql.append("?"); if (i < size - 1) { sql.append(","); } } sql.append(") }"); return sql.toString(); } private String formatSqlStr(String sql, ArrayList params) { if ((params == null) || (params.size() == 0)) return sql; for (int i = 0; i < params.size(); i++) { sql = sql.replaceFirst("//?", String.valueOf(params.get(i))); } return sql; } @SuppressWarnings("deprecation") public int executeByFun(Session session, String fname, List params) throws HibernateException, SQLException { String sql = getSqlStr(fname, params.size()); int rval = -100; try { if (session.isConnected()) { CallableStatement call = session.connection().prepareCall(sql); call.registerOutParameter(1, 4); int i = 0; for (int j = 2; i < params.size(); j++) { call.setObject(j, params.get(i)); i++; } if (!call.execute()) { rval = call.getInt(1); } call.close(); } } catch (Exception ex) { ex.printStackTrace(); } return rval; } public int executeByFun(String fname, List params) throws HibernateException, SQLException { String sql = getSqlStr(fname, params.size()); int rval = -100; try { Session session = DAOUtil.getInstance().getSession(); if (session.isConnected()) { CallableStatement call = session.connection().prepareCall(sql); call.registerOutParameter(1, 4); int i = 0; for (int j = 2; i < params.size(); j++) { call.setObject(j, params.get(i)); i++; } if (!call.execute()) { rval = call.getInt(1); } call.close(); } } finally { closeSession(); } return rval; } public double executeByFunDouble(String fname, ArrayList params) throws HibernateException, SQLException { String sql = getSqlStr(fname, params.size()); double rval = -100.0D; try { Session session = DAOUtil.getInstance().getSession(); if (session.isConnected()) { CallableStatement call = session.connection().prepareCall(sql); call.registerOutParameter(1, 8); int i = 0; for (int j = 2; i < params.size(); j++) { call.setObject(j, params.get(i)); i++; } if (!call.execute()) { rval = call.getDouble(1); } call.close(); } } finally { closeSession(); } return rval; } public int executeBySql(String sql, ArrayList params) throws HibernateException, SQLException { Transaction tran = null; try { Session session = DAOUtil.getInstance().getSession(); if (session.isConnected()) { Query query = session.createSQLQuery(sql); for (int i = 0; i < params.size(); i++) query.setParameter(i, params.get(i)); tran = session.beginTransaction(); int rval = query.executeUpdate(); tran.commit(); return rval > 0 ? 0 : -100; } } finally { closeSession(); } return -100; } public double executeBySqlDouble(String sql, ArrayList params) throws HibernateException, SQLException { Transaction tran = null; double rval = 0.0D; List list = null; try { Session session = DAOUtil.getInstance().getSession(); if (session.isConnected()) { Query query = session.createSQLQuery(sql); for (int i = 0; i < params.size(); i++) query.setParameter(i, params.get(i)); tran = session.beginTransaction(); list = query.list(); if (list != null && list.size() > 0) { rval = Double.parseDouble(list.get(0)==null ? 0.0 + "" : list.get(0) + ""); } tran.commit(); } } finally { closeSession(); } return rval; } public List getResultByFun(String fname, ArrayList params) throws HibernateException, SQLException { String sql = getSqlStr(fname, params.size()); List result = null; try { Session session = DAOUtil.getInstance().getSession(); if (session.isConnected()) { System.out.println(session.connection().prepareCall(sql)); CallableStatement call = session.connection().prepareCall(sql); call.registerOutParameter(1, -10); for (int i = 0, j = 2; i < params.size(); j++) { call.setObject(j, params.get(i)); i++; } if (!call.execute()) { ResultSet rs = (ResultSet) call.getObject(1); ResultSetMetaData rsmd = rs.getMetaData(); String[] colname = new String[rsmd.getColumnCount()]; for (int j = 1, i = 0; i < colname.length; j++) { colname[i] = rsmd.getColumnName(j); i++; } result = new ArrayList(); while (rs.next()) { Map row = new HashMap(); for (int i = 0; i < colname.length; i++) row.put(colname[i], rs.getObject(colname[i])); result.add(row); } rs.close(); } call.close(); } } finally { closeSession(); } return result; } public String getResultByFunString(String fname, ArrayList params) throws HibernateException, SQLException { String sql = getSqlStr(fname, params.size()); String str = ""; try { Session session = DAOUtil.getInstance().getSession(); if (session.isConnected()) { CallableStatement call = session.connection().prepareCall(sql); call.registerOutParameter(1, 12); for (int i = 0, j = 2; i < params.size(); j++) { call.setObject(j, params.get(i)); i++; } if (!call.execute()) { str = String.valueOf(call.getObject(1)); } call.close(); } } finally { closeSession(); } return str; } public List getResultBySql(String sql, ArrayList params) throws HibernateException, SQLException { List result = null; sql = formatSqlStr(sql, params); try { Session session = DAOUtil.getInstance().getSession(); if (session.isConnected()) { Statement stat = session.connection().createStatement(); ResultSet rs = stat.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); String[] colname = new String[rsmd.getColumnCount()]; for (int j = 1, i = 0; i < colname.length; j++) { colname[i] = rsmd.getColumnName(j); i++; } result = new ArrayList(); while (rs.next()) { Map row = new HashMap(); for (int i = 0; i < colname.length; i++) row.put(colname[i], rs.getObject(colname[i])); result.add(row); } rs.close(); stat.close(); } } finally { closeSession(); } return result; } } 应用程序调用Function: /**添加参数**/ ArrayList<Object> params = new ArrayList<Object>(); if((null !=wer_1 && ""!=wer_1)&&(null !=wer_2 && ""!=wer_2)) { /** * 古道西风 * 2011-05-23 */ params.add(tbmeetmgr.getStoptime()); //会议开会日期 params.add(tbmeetmgr.getStarttime()); //会议开始时间 params.add(tbmeetmgr.getEndtime());//会议结束时间 params.add(ecId);//集团编号 if(tbmeetmgr.getXunhuairiqi() == null){ params.add(0); //循环日期 }else{ params.add(tbmeetmgr.getXunhuairiqi()); //循环日期 } if(tbmeetmgr.getXunhuaimoshi() == null){ params.add(0); //循环模式 }else{ params.add(tbmeetmgr.getXunhuaimoshi()); //循环模式 } params.add(tbmeetmgr.getHuiyimoshi()); //会议模式 } //List<Object> list_Sel_RoomInfo=daoSql.find(sql, params); //原程序代码 List<Object> list_Sel_RoomInfo = new ArrayList<Object>();; try { list_Sel_RoomInfo = com.boxun.crm.util.DAOUtil.getInstance().getResultByFun ("FUN_tbmeetmgrInfo.pro_sel_tbmeetmgrinfo", params); } catch (HibernateException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } if(null !=list_Sel_RoomInfo && list_Sel_RoomInfo.size()>0) { list_room_info=new ArrayList<Tbmeetroom>(); for(int i=0;i<list_Sel_RoomInfo.size();i++) { Map map=(HashMap)list_Sel_RoomInfo.get(i); Tbmeetroom tbmeetroom=new Tbmeetroom(); tbmeetroom.setId(new Long(map.get("ID").toString())); tbmeetroom.setName(new String(map.get("NAME").toString())); list_room_info.add(tbmeetroom); } return list_room_info; } Oracle Packages(相当于java中的接口): CREATE OR REPLACE PACKAGE FUN_tbmeetmgrInfo IS FUNCTION pro_Sel_tbmeetmgrInfo(v_stoptime varchar2, v_strtime varchar2, v_endtime varchar2, v_ecid number, v_xunhuairiqi varchar2, v_xunhuaimoshi number, v_huiyimoshi number) return sys_refcursor; END FUN_tbmeetmgrInfo; Oracle Package bodies(相当于java中的实现类): CREATE OR REPLACE PACKAGE BODY FUN_tbmeetmgrInfo IS FUNCTION pro_Sel_tbmeetmgrInfo(v_stoptime varchar2, v_strtime varchar2, v_endtime varchar2, v_ecid number, v_xunhuairiqi varchar2, v_xunhuaimoshi number, v_huiyimoshi number) return sys_refcursor IS TYPE c_time IS REF CURSOR; --创建游离标记 vrec c_time; varInt number; strOverSql varchar2(30); v_months number; out_room sys_refcursor; begin delete timeinfo where 11=1; commit; --v_Result.extend; --赋值前、必须加上 --一次性会议 if v_huiyimoshi = 1 then open out_room for select id, name from Tbmeetroom where id in (select id from Tbmeetroom where status = 0 and id not in (select huiyishi from tbmeetmgrinfo where to_date(v_strtime,'hh24:mi') between to_date(starttime,'hh24:mi') and to_date(endtime,'hh24:mi') and to_date(stoptime,'yyyy-MM-dd') = to_date(v_stoptime,'yyyy-MM-dd') and ecid = v_ecid or to_date(v_endtime,'hh24:mi') between to_date(starttime,'hh24:mi') and to_date(endtime,'hh24:mi') and to_date(stoptime,'yyyy-MM-dd') = to_date(v_stoptime,'yyyy-MM-dd') and ecid = v_ecid ) and id not in (select meetroomid from Tbmeetroomlock where to_date(v_stoptime||' '||v_strtime,'yyyy-mm-dd hh24:mi') between to_date(lockstarttime,'yyyy-mm-dd hh24:mi') and to_date(lockendtime,'yyyy-mm-dd hh24:mi') or to_date(v_stoptime||' '||v_endtime,'yyyy-mm-dd hh24:mi') between to_date(lockstarttime,'yyyy-mm-dd hh24:mi') and to_date(lockendtime,'yyyy-mm-dd hh24:mi'))); end if; ------------------------------------------------------------------------------------------ if v_huiyimoshi = 2 then --单周会议 if v_xunhuaimoshi = 1 then select ceil(( to_date(v_stoptime,'yyyy-mm-dd') - next_day(to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')-1, ceil(substr(v_xunhuairiqi,3)))+1 )/7) into varInt from dual; OPEN vrec for SELECT to_char(next_day(to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')-1, ceil(substr(v_xunhuairiqi,3)))+1+(rownum-1)*7 , 'yyyy-MM-dd') from dual connect by rownum<=varInt ; LOOP FETCH vrec INTO strOverSql; exit when vrec%notfound; dbms_output.put_line('StopTime'||strOverSql); insert into timeInfo values(strOverSql); commit; end loop; end if; --每月 if v_xunhuaimoshi = 3 then select ceil(months_between(to_date(v_stoptime,'yyyy-mm-dd'), to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'))) into varInt from dual; OPEN vrec for SELECT to_char(add_months(to_date((substr(to_char(sysdate,'yyyy-mm-dd'),1,8))||(substr(v_xunhuairiqi,3,4)),'yyyy-mm-dd'),+(rownum-1)), 'yyyy-mm-dd') from dual connect by rownum<= ceil(varInt) ; LOOP FETCH vrec INTO strOverSql; exit when vrec%notfound; dbms_output.put_line('StopTime'||strOverSql); insert into timeInfo values(strOverSql); commit; end loop; end if; --每季度 if v_xunhuaimoshi = 4 then select ceil((to_date(v_stoptime,'yyyy-mm-dd')-to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'))/90) into varInt from dual; v_months := gettimebytime(ceil(substr(substr(v_xunhuairiqi,3,5),0,1))); dbms_output.put_line('v_months:'||v_months); OPEN vrec for SELECT to_char(add_months(to_date((substr(to_char(sysdate,'yyyy-mm-dd'),1,5))||v_months||'-'||substr(v_xunhuairiqi,5,7),'yyyy-MM-dd'),+(rownum-1)*3), 'yyyy-mm-dd') from dual connect by rownum<= ceil(varInt); LOOP FETCH vrec INTO strOverSql; exit when vrec%notfound; dbms_output.put_line('StopTime'||strOverSql); insert into timeInfo values(strOverSql); commit; end loop; end if; ----------------------------------------------------------------------------------------------- open out_room for select id, name from Tbmeetroom where id in (select id from Tbmeetroom where status = 0 and id not in (select huiyishi from tbmeetmgrinfo,timeinfo where to_date(v_strtime,'hh24:mi') between to_date(starttime,'hh24:mi') and to_date(endtime,'hh24:mi') and to_date(stoptime,'yyyy-MM-dd') = to_date(timeinfo.t_stoptime,'yyyy-MM-dd') and ecid = v_ecid or to_date(v_endtime,'hh24:mi') between to_date(starttime,'hh24:mi') and to_date(endtime,'hh24:mi') and to_date(stoptime,'yyyy-MM-dd') = to_date(timeinfo.t_stoptime,'yyyy-MM-dd') and ecid = v_ecid ) and id not in (select meetroomid from Tbmeetroomlock,timeinfo where to_date(timeinfo.t_stoptime||' '||v_strtime,'yyyy-mm-dd hh24:mi') between to_date(lockstarttime,'yyyy-mm-dd hh24:mi') and to_date(lockendtime,'yyyy-mm-dd hh24:mi') or to_date(timeinfo.t_stoptime||' '||v_endtime,'yyyy-mm-dd hh24:mi') between to_date(lockstarttime,'yyyy-mm-dd hh24:mi') and to_date(lockendtime,'yyyy-mm-dd hh24:mi'))); ------------------------------------------------------------------------------------------ end if; RETURN out_room; END pro_Sel_tbmeetmgrInfo; END FUN_tbmeetmgrInfo;
发表评论
-
MyBatis 使用 MyCat 实现多租户的一种简单思路
2017-11-20 18:27 2851本文的多租户是基于多数据库进行实现的,数据是通过不同数据库进 ... -
Otter(一)初识----简介和基本架构图
2017-10-11 11:23 1283tter 初识----简介和基本架构图 ... -
Canal+Otter - 前日篇(1)
2017-10-11 11:21 1197数据库同步中间件Canal+Otter - 前日篇(1) ... -
Otter-入门篇1(阿里开源项目Otter介绍)
2017-10-11 11:16 951Otter-入门篇1(阿里开源项目Otter介绍) ... -
Mysql几种索引类型的区别及适用情况
2017-09-30 16:27 584如大家所知道的,Mysql目前主要有以下几种索引类型:FUL ... -
唯一索引与主键索引的比较
2017-09-29 10:21 1474唯一索引唯一索引不 ... -
主键索引和唯一索引的区别
2017-09-29 10:05 655-- 区别 主键是一种约束,唯一索引是一种索引,两者 ... -
Index column size too large. The maximum column size is 767 bytes
2017-09-28 18:01 1890Index column size too large. T ... -
数据库死锁分析与解决
2017-08-17 10:00 864一、死锁的表现 1、 ... -
mysql,oracle,sql server中的默认事务隔离级别查看,更改
2017-08-09 13:44 1378未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的 ... -
Mycat跨分片Join
2017-08-02 11:26 8801 前言 Mycat目前版本支持跨分片的join,主要实现 ... -
Mycat 分布式事务的实现
2017-08-02 11:27 1371引言:Mycat已经成为了一个强大的开源分布式数据库 ... -
MyCat部署运行(Windows环境)与使用步骤详解
2017-08-02 10:20 8901、MyCat概念 1.1 总体架构 MyCAT的架 ... -
mycat 分片中快速数据迁移思考
2017-07-31 17:42 871操作实践背景: travelrecord表定义 ... -
Mycat水平拆分之十种分片规则
2017-07-31 16:43 879水平切分分片实现 配置schema.xml ... -
博客分类: DB-oracle sqlOracle 1、方式一:使用序列和触发器 Sql代码 收藏代码 SQL> CREATE SEQUENCE te
2017-07-22 09:01 511sqlOracle 1、方式一:使用 ... -
PL/SQL Developer连接本地Oracle 11g 64位数据库
2017-05-16 22:29 7101.登录PL/SQL Developer 这里省略Ora ... -
分库分表的几种常见形式以及可能遇到的难
2017-04-11 23:33 811在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表 ... -
MySQL 日志
2017-01-11 20:58 586概述 MySQL日志记录了MySQL服务器的各种行为,My ... -
undo log与redo log原理分析
2016-12-17 21:57 818数据库通常借助日志来 ...
相关推荐
以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。
### Java调用Oracle的过程和函数 在现代软件开发过程中,Java与Oracle数据库的结合非常常见。为了更好地管理和处理数据,通常需要在Java程序中调用Oracle数据库中的存储过程或函数。本文将详细介绍如何通过Java来...
3. **Java调用Oracle函数**: 在Java中,你需要使用Oracle的JDBC驱动(ojdbc.jar和nls_charset12.jar)来与Oracle数据库交互。首先,你需要加载Oracle驱动并建立数据库连接。然后,你可以通过`CallableStatement`来...
本篇文章将深入探讨如何使用Hibernate的Query接口来调用Oracle的存储过程和函数,以及提供相关的示例代码和数据库文件。 首先,让我们了解什么是存储过程和函数。存储过程是预编译的SQL语句集合,可以接受参数、...
以上是Java调用Oracle数据库过程和函数的基本步骤和关键知识点。实际应用中,可能还需要考虑事务管理、性能优化(如批处理)、连接池等高级主题。理解这些概念和操作对于开发高效、可靠的Java数据库应用至关重要。
在Java编程中,有时我们需要调用Oracle数据库的存储过程,特别是当存储过程返回一个游标(Cursor)时,这种情况在处理大量数据或者分页查询时很常见。游标允许我们逐行处理结果集,而无需一次性加载所有数据,这对于...
Oracle调用Java代码过程是一种将Java程序集成到Oracle数据库中的技术,主要应用于处理特定的业务逻辑,例如在本例中,是为了访问异构数据库(如DB2)的数据。以下是详细的步骤和注意事项: **步骤一:加载JDBC驱动*...
本文将深入探讨如何在Hibernate中调用Oracle的函数,以实现高效的数据操作。 首先,我们需要理解Hibernate的核心理念,它允许开发者通过面向对象的方式来处理数据库操作,而无需编写大量的SQL语句。Hibernate通过...
为了使Oracle能够调用基于Java的WebService,还需要安装JDK并配置Oracle对Java的支持: 1. **下载并安装JDK**:确保Oracle运行环境中已安装Java环境。 2. **加载Java支持**:使用`loadjava`工具加载必要的JAR文件到...
在“JAVA与存储过程.txt”文件中,可能包含了具体的示例代码,解释了如何在Java中调用Oracle存储过程和函数,以及如何处理输入和输出参数。这些示例可能涉及到了`Connection`, `PreparedStatement`, `ResultSet`等...
### Linux环境下实现Java调用Windows环境下的Matlab函数 #### 一、所需条件及说明 为了实现在Linux环境中通过Java程序来调用Windows系统下的Matlab函数,首先需要确保满足以下条件: 1. **Windows环境下**: - ...
本篇文章将详细介绍如何在Ibatis中调用Oracle的函数和存储过程。 首先,理解基本概念: 1. **Oracle函数**:函数是一段可重复使用的PL/SQL代码,它接收输入参数(IN参数),可选地返回一个结果值(RETURN参数)。...
在系统实现中,有时会有直接在数据库端利用触发器、存储过程等方式进行数据传递、分发的业务,而其中可能会涉及一些业务逻辑,为了处理这些业务逻辑,并简单起见,可以直接在触发器或存储过程中调用一些 Java 类或 ...
这主要得益于Oracle公司在Java 6版本引入的一个新特性——Java Scripting API(JSR 223),它允许Java程序执行多种脚本语言,包括JavaScript。 ### 1. Java Scripting API (JSR 223) JSR 223是Java的一个标准接口...
通过这篇文章,我们可以学习到如何在Oracle9i数据库中创建和管理JAVA存储过程,以及如何从JAVA程序中调用PL/SQL存储过程,这对于任何需要在数据库和应用程序之间进行数据交互的开发者来说都是非常有价值的技能。
3. 调用函数:在SQL查询中调用这个函数,例如`SELECT your_function('汉字') FROM DUAL;`,这将返回指定汉字的五笔码。 需要注意的是,由于五笔字典较大,存储和查询可能会有性能问题,所以在实际应用中,可能需要...
在这段Java代码中,我们使用了`CallableStatement`来调用Oracle存储过程`TESTA`。关键点包括: - `prepareCall`方法用于准备调用存储过程。 - 使用`setString`方法设置输入参数的值。 - 调用`execute`方法执行存储...
总结,CallableStatement在Java中用于调用Oracle存储过程,无论是无返回值、有返回值还是返回结果集,都可以通过设置参数、注册`OUT`参数、处理结果集来实现。在实际开发中,注意数据库连接的管理以及异常的处理,...
用 Java 调用 Oracle 存储过程可以使用 JDBC 或 Oracle 的java驱动程序。下面是用 Java 调用 Oracle 存储过程的总结: 1. 无返回值的存储过程 无返回值的存储过程可以使用 CallableStatement 来调用。 2. 有...
在Java中调用Oracle存储过程可以通过JDBC API来完成。在调用时,可以根据存储过程是否有返回值来进行区分处理。无返回值的存储过程只需要执行execute命令,而有返回值的存储过程则需要使用CallableStatement对象,并...