- 浏览: 562862 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (350)
- Sybase (30)
- SQL SERVER2005 (14)
- 数据库 (27)
- SSH框架 (27)
- WebService (21)
- 下载-软件收藏 (15)
- 随笔-日常使用 (9)
- Flex 相关 (13)
- Linux (11)
- Web (64)
- XML相关 (9)
- Socket相关 (1)
- Elipse (3)
- 统计报表 (11)
- 线程相关 (3)
- Java相关 (37)
- JAVASCRIPT (19)
- JAVA反射 (3)
- JSP标签 (3)
- 随笔-其他 (2)
- 随笔-设计模式 (3)
- 随笔-架构师相关 (1)
- 下载-源码 (7)
- 下载-帮助文档 (1)
- 下载-插件 (6)
- 技术-.NET (2)
- 技术-Excel VBA (8)
- 应用-地图相关 (2)
- 应用-GSM短信猫 (5)
- 应用-单点登录 (3)
- Android相关 (3)
最新评论
-
sucheng2016:
发现jconn4.jar 里面有getBlob(String) ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
sucheng2016:
java.lang.UnsupportedOperationE ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
ok123zxx:
没下文了吗
通过 Tomcat Advanced I/O 获得高性能的 Ajax tocmat6+CometProcessor -
q1345111:
大家这个问题 尚未完成方法 com.sybase.jdbc3. ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
bdk82924:
heshujing217187 写道问题同1楼一样,求解!换j ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver
转自:http://wxy0327.itpub.net/post/16888/149516
http://www.blogjava.net/TrampEagle/archive/2011/05/03/23605.html
Oracle 存储过程返回结果集用 ref cursor 实现。试验步骤如下:
1. 建立 ref cursor 类型和过程
drop table prices / drop table test / create or replace package types as type ref_cursor is ref cursor; end; / create table prices( ric varchar(6) primary key, price number(7,2), updated date ) / create or replace function sp_get_prices(v_price in number) return types.ref_cursor as stock_cursor types.ref_cursor; begin open stock_cursor for select ric,price,updated from prices; return stock_cursor; end; / insert into prices select '1',12,sysdate from dual union all select '2',123,sysdate from dual union all select '3',1245,sysdate from dual / commit; --创建表 create table test ( carno varchar2(30), carinfoid number ) / --带 参数,无返回 create or replace procedure pro_ins(mt1 in varchar, mt2 in number) as carinfo_id number; begin insert into test(test.carno,test.carinfoid) values(mt1,mt2); commit; end pro_ins; / --带参数,有返回 create or replace procedure pro_return(para1 in varchar2,para2 out varchar2) as begin select para1||' add ' into para2 from dual; end pro_return; /
2. Java 调用
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import oracle.jdbc.driver.OracleTypes; public class JDBCDemo { /** * Compile-time flag for deciding which query to use */ private boolean useOracleQuery = true; /** * Class name of Oracle JDBC driver */ private String driver = "oracle.jdbc.driver.OracleDriver"; /** * Initial url fragment */ private String url = "jdbc:oracle:thin:@"; /** * Standard Oracle listener port */ private String port = "1521"; /** * Oracle style of calling a stored procedure */ private String oracleQuery = "begin ? := sp_get_prices(?); end;"; /** * JDBC style of calling a stored procedure */ private String genericQuery = "{ call ? := sp_get_prices(?) }"; /** * Connection to database */ private Connection conn = null; public JDBCDemo(String host, String db, String user, String password) throws ClassNotFoundException, SQLException { // construct the url url = url + host + ":" + port + ":" + db; // load the Oracle driver and establish a connection try { Class.forName(driver); conn = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException ex) { System.out.println("Failed to find driver class: " + driver); throw ex; } catch (SQLException ex) { System.out.println("Failed to establish a connection to: " + url); throw ex; } } /** * * 返回 Cursor结果集 * * @throws SQLException * @author * @date */ private void exeRetCursor() throws SQLException { String query = useOracleQuery ? oracleQuery : genericQuery; query = "{ call ? := sp_get_prices(?) }"; query = "begin ? := sp_get_prices(?); end;"; System.out.println("Query: " + query + "n"); CallableStatement stmt = conn.prepareCall(query); // register the type of the out param - an Oracle specific type stmt.registerOutParameter(1, OracleTypes.CURSOR); // set the in param stmt.setFloat(2, 1); // execute and retrieve the result set stmt.execute(); ResultSet rs = (ResultSet) stmt.getObject(1); // print the results while (rs.next()) { System.out.println(rs.getString(1) + " | " + rs.getFloat(2) + " |" + rs.getDate(3).toString()); } rs.close(); stmt.close(); } /** * * 无返回结果 * * @throws SQLException * @author * @date */ private void exeNoRet() throws SQLException { String query = "{ call pro_ins(?,?) }"; System.out.println("Query: " + query + "n"); CallableStatement stmt = conn.prepareCall(query); // register the type of the out param - an Oracle specific type // set the in param stmt.setString(1, "abcd"); stmt.setInt(2, 111); // execute and retrieve the result set stmt.execute(); System.out.println(" call pro_ins success"); stmt.close(); } /** * * 返回 String * * @throws SQLException * @author * @date */ private void exeRetSingle() throws SQLException { String query = "{ call pro_return(?,?) }"; System.out.println("Query: " + query + "n"); CallableStatement stmt = conn.prepareCall(query); // register the type of the out param - an Oracle specific type // set the in param stmt.setString(1, "abcd"); stmt.registerOutParameter(2, Types.VARCHAR); // execute and retrieve the result set stmt.execute(); String ret = stmt.getString(2); // print the results System.out.println("get pro_return:" + ret); stmt.close(); } /** * Cleanup the connection */ private void cleanup() throws SQLException { if (conn != null) conn.close(); } /** * Runs the class */ public static void main(String[] args) throws Exception { try { // assign the args to sensible variables for clarity String host = "127.0.0.1"; String db = "orcl"; String user = "zxinweb"; String password = "zxinweb"; // and execute the stored proc JDBCDemo jdbc = new JDBCDemo(host, db, user, password); // 返回 Cursor结果集 jdbc.exeRetCursor(); // 无返回 jdbc.exeNoRet(); // 返回String jdbc.exeRetSingle(); jdbc.cleanup(); } catch (ClassNotFoundException ex) { System.out.println("Demo failed"); } catch (SQLException ex) { System.out.println("Demo failed: " + ex.getMessage()); } } }
发表评论
-
Mysql 的语法
2015-05-17 20:54 5301、启动 停止 bin/mysql.server star ... -
DbUtils的使用
2013-01-28 19:56 1248DbUtils的使用 今天在看一段源码的时候,看到了可以使用 ... -
NoSQL非关系型数据库
2013-01-22 15:39 934转:http://baike.baidu.com/view/2 ... -
mysql 导入导出函数、存储过程
2012-06-22 16:20 2939mysql常用导出数据命令: 1.mysql导出整个数 ... -
JDBC分页工具类
2012-02-01 15:37 1179转自:http://xdwangiflytek.iteye.c ... -
几种数据库的SQL判断表是否存在
2012-02-01 15:35 946Oracle: declarevar_exis ... -
Oracle中实现分页的方法 .
2011-12-12 09:27 1350转:http://blog.csdn.net/andkylee ... -
转:ASE中数据结果集分页功能的三种实现方法 .
2011-12-12 09:26 1132转:http://blog.csdn.net/andkylee ... -
Oracle的定时任务创建
2011-09-09 13:02 941drop sequence s_CarInfoID ... -
数据库下载地址 更新中....
2011-08-02 13:49 822ORACLE 下载(官网) http://www.oracl ... -
HugeTable 连接
2011-07-05 13:20 1057JAVA连接HugeTable的代码如下 ... -
Hsqldb安装与使用
2011-07-04 19:45 1090转自:http://fengyongfa2006.blog.1 ... -
SQL语句修改字段类型报错
2011-05-06 10:03 1989Sybase 12.5数据库执行 alter ta ... -
转SQL Server 存储过程的经典分页
2010-06-22 19:18 1323转自:http://www.iteye.com/topic/2 ... -
MySql数据库
2010-06-05 14:33 9481、安装 正在使用5.1版本 ,下载地址 ... ... -
Linux下启动Sybase ASE和IQ
2010-02-01 10:01 4676启动和关闭Sybase ASE sybase@*** ... -
Oracle Win自动备份数据BAT文件
2009-12-21 22:24 1455@echo off REM ################ ... -
Oracle常用及非常用函数
2009-09-22 16:47 802转自: http://wangyu.iteye.com/blo ... -
JDBC使用addBatch一次插入 万条数据
2009-09-22 16:26 2245public class Conn { pub ... -
Linux下启动Oralce
2009-09-22 14:45 899su - oracle sqlplus /nolog ...
相关推荐
Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...
总结来说,这个示例展示了如何在Java中调用Oracle存储过程,处理返回的Record类型数据,并将这些数据以Cursor形式返回。在实际开发中,这种技术常用于处理复杂的业务逻辑,尤其是在需要大量自定义数据结构和返回多行...
本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...
本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...
以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。
### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...
以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....
总结,通过Java调用Oracle存储过程,我们需要配置JDBC驱动,建立数据库连接,创建CallableStatement,设置参数,执行存储过程,并处理返回的结果。在这个例子中,我们展示了如何调用一个简单的存储过程并打印返回的...
以上代码展示了如何在Java中调用Oracle数据库的三种类型的存储过程:无返回值的存储过程、有单个返回值的存储过程以及返回列表的存储过程。对于无返回值的存储过程,主要涉及的是参数的输入,通过`execute()`方法...
总之,Java调用Oracle存储过程,尤其是处理游标,需要理解JDBC的使用、Oracle特定的类型以及存储过程的参数传递方式。通过合理的编程实践,我们可以高效地在Java应用程序中集成Oracle数据库的复杂操作。
### CallableStatement调用Oracle存储过程返回结果集(ResultSet) #### 一、无返回值的存储过程调用 在本节中,我们通过一个具体的例子来详细介绍如何使用`CallableStatement`来调用Oracle数据库中的无返回值存储...
存储过程使用 `SYS_REFCURSOR` 输出参数将结果集返回给调用方。 `P_EMP_ADD` 存储过程用于添加新员工信息,并返回添加结果。该过程接收两个输入参数:`V_ID` 和 `V_NAME`,分别用于添加员工 ID 和姓名。存储过程...
在Java编程中,调用Oracle数据库的存储过程并获取结果集是一项常见的任务。在这个场景下,我们将使用JDK 1.5版本,MyEclipse集成开发环境,以及Oracle 11g数据库。以下是对这个主题的详细解释: 首先,我们需要确保...
### JAVA调用ORACLE存储过程知识点详解 #### 一、背景与概述 在现代软件开发过程中,集成多种技术栈是常态。特别是在企业级应用中,Java 和 Oracle 数据库的组合非常常见。通过 Java 调用 Oracle 存储过程不仅能够...
java调用oracle存储过程.wps java调用oracle存储过程.wps java调用oracle存储过程.wps
通过这些步骤,你可以成功地从Java应用程序中调用Oracle存储过程。确保正确配置JDBC驱动,理解存储过程的参数类型,并熟悉JDBC API,这样就能高效地实现数据交互了。在开发过程中,可以参考Oracle的官方文档以及各种...
在这个入门实例中,我们将重点探讨如何通过Java调用Oracle的存储过程来实现这些基本操作,并结合使用DOM4J解析XML配置文件来管理数据库连接。 首先,存储过程是Oracle数据库中预编译的SQL语句集合,它可以封装复杂...
### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...