`
wangronaldo
  • 浏览: 99398 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

jdbc调用数据库(函数,存储过程,包)

    博客分类:
  • jdbc
阅读更多
存储过程:
create or replace procedure inandoutpro(a in out number,b in out number) as
begin
       a:=a+b;
       b:=a-b;
       a:=a-b;
end inandoutpro;

java类调用存储过程:
Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection conn = DriverManager.getConnection(
				"jdbc:oracle:thin:@localhost:1521:orcl", "scott", "ronaldo");
		String procedure = "{call inandoutpro(?,?)}";
		CallableStatement cs = conn.prepareCall(procedure);
		cs.setInt(1, 5);
		cs.setInt(2, 7);
		cs.registerOutParameter(1, java.sql.Types.INTEGER);
		cs.registerOutParameter(2, java.sql.Types.INTEGER);

		cs.executeUpdate();

		int a = cs.getInt(1);
		int b = cs.getInt(2);
		System.out.println(a + "==" + b);


函数(行转列):
create or replace function rowToCol(QuerySql varchar2) return varchar2 as
begin
     declare type cu_rtoc is ref cursor;
     proscu cu_rtoc;
     string_name varchar2(200);
     row_cu product%rowtype;
     begin
          open proscu for QuerySql;
          loop
              fetch proscu into row_cu;
              exit when proscu%notfound;
              string_name:=string_name||row_cu.pname||',';
          end loop;
          return rtrim(string_name,',');--去掉最后的逗号
     end;
end rowToCol;


java类调用函数:
Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection conn = DriverManager.getConnection(
				"jdbc:oracle:thin:@localhost:1521:orcl", "scott", "ronaldo");
		String procedure = "{?=call rowToCol(?)}";
		CallableStatement cs = conn.prepareCall(procedure);
		cs.registerOutParameter(1, Types.VARCHAR);// 获得返回的字符串
		String sql = "select * from product";
		cs.setString(2, sql);
		cs.executeUpdate();
		String names = cs.getString(1);
		System.out.println(names);
		conn.close();


包(游标):
--package包(接口)
create or replace package pro_package as
       type cu_ref is ref cursor;
       procedure pro_product(cur_ref out cu_ref);
end pro_package;

--实现包(实现类)
create or replace package body pro_package as
      procedure pro_product(cur_ref out cu_ref) is
      begin
           open cur_ref for 'select * from product';
      end pro_product;
end pro_package;


java类调用包里的过程返回游标:
Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection conn = DriverManager.getConnection(
				"jdbc:oracle:thin:@localhost:1521:orcl", "scott", "ronaldo");
		String callsql = "{call pro_package.pro_product(?)}";
		OracleCallableStatement cs = (OracleCallableStatement) conn
				.prepareCall(callsql);
		cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
		cs.executeUpdate();
		ResultSet rs = null;
		rs = cs.getCursor(1);
		while (rs.next()) {
			System.out.println(rs.getString(1) + "==" + rs.getString(2) + "=="
					+ rs.getString(3));
		}
		rs.close();
		conn.close();


分享到:
评论

相关推荐

    jdbc调用存储过程 函数例子

    在某些复杂的数据处理场景下,我们可能需要调用数据库中的存储过程或函数。本文将详细阐述如何通过JDBC在Java程序中调用存储过程和函数,并提供一个实际的例子。 ### 1. JDBC概述 JDBC是Java API,它提供了统一的...

    JDBC调用过程与函数源码

    通过以上步骤,我们可以成功地使用JDBC调用数据库的过程和函数。在实际开发中,为了提高代码的可读性和复用性,通常会将这些操作封装到DAO(Data Access Object)层,便于管理和维护。同时,现代ORM框架如Hibernate...

    jdbc调用存储过程,函数,游标

    本篇文章将详细讲解如何利用JDBC调用存储过程、函数以及处理游标。 首先,存储过程是数据库中预编译的一组SQL语句,它允许我们封装复杂的业务逻辑,提高执行效率,减少网络传输的数据量。在JDBC中调用存储过程通常...

    java调用oracle存储过程或者函数

    在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...

    jdbc调用存储过程实现增删改查

    本文将深入探讨如何使用JDBC调用Oracle数据库的存储过程来实现增删改查操作。 首先,理解JDBC是Java与各种数据库交互的桥梁,它提供了一组API,允许程序员执行SQL语句并处理结果。Oracle数据库则是一种广泛使用的...

    JDBC连接数据库BaseDao通用类(可以调用存储过程)

    从给定的文件信息来看,我们正在探讨一个Java程序中用于连接数据库并调用存储过程的通用类——`BaseDaoOutput`。这个类是IT领域中处理数据库操作时经常使用的一种设计模式,它通过封装数据库连接、执行SQL语句、处理...

    新 MVC架构的JDBC项目(加入存储过程和函数的调用)

    在本项目中,我们主要探讨的是如何在Java中利用JDBC技术来操作MySQL数据库,并且扩展到使用存储过程和函数的调用。JDBC(Java Database Connectivity)是Java语言连接数据库的标准API,它允许Java程序与各种数据库...

    java调用存储过程(含out参数)

    在Java编程中,调用数据库的存储过程是常见的任务,特别是在处理复杂的业务逻辑或需要高效数据操作时。本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的...

    JDBC调用存储过程.pdf

    通过 `CallableStatement` 可以方便地在Java应用程序中调用数据库中的存储过程和函数,从而实现复杂的数据处理任务。理解其核心方法的使用对于高效利用JDBC至关重要。在实际应用中,还需要注意资源管理,确保连接和...

    如何调用oracle的函数、存储过程

    当你需要在应用程序中调用Oracle函数和存储过程时,通常会使用数据库驱动或ODBC/JDBC。比如在Delphi中(根据提供的文件名`*.dpr`, `*.dfm`等,可能是Delphi项目),你可以使用ADO或Oracle的OCI库。以下是一个Delphi...

    java中调用oracle的存储过程和函数

    在Java应用程序中调用Oracle数据库中的存储过程或函数是一项常见的任务。这不仅能够提高代码的执行效率,还可以有效地管理事务处理,确保数据的一致性和完整性。本文将详细介绍如何在Java环境中通过`...

    JDBC开发过程与原理

    4. **本地协议纯Java驱动程序**:这类驱动程序直接将JDBC调用转化为特定数据库的网络协议,实现了直接与数据库服务器的通信,是Intranet访问的理想选择。 #### 三、JDBC API - **Driver接口**:代表驱动程序,所有...

    JAVA通过MyBatis调用MySql存储过程和函数doc文档合集整理.zip

    这个文档合集应该详细讲解了这些步骤和最佳实践,帮助开发者熟练掌握在Java中利用MyBatis调用MySQL存储过程和函数的技巧,从而更高效地进行数据库操作。通过深入学习和实践,开发者可以更好地理解这两者之间的交互,...

    Matlab中使用JDBC访问SQL Server

    3. **建立连接**:通过调用 `database` 函数并传递必要的参数来建立数据库连接。 4. **执行查询**:使用 `exec` 函数执行SQL查询语句(此处为 `SELECT * FROM TestTable`),该语句返回一个游标对象。 5. **获取...

    非常有用的jdbc的操作数据库

    4. 对于复杂查询,考虑使用存储过程或数据库提供的函数。 5. 优化SQL语句,避免全表扫描,使用索引,减少JOIN操作等。 **六、异常处理** 在进行JDBC操作时,需要注意捕获和处理`SQLException`。通常,一个SQL操作...

    mysql调用存储过程

    总之,通过JDBC调用MySQL存储过程使得Java应用程序能够灵活地与数据库交互,执行复杂的业务逻辑,同时保持代码的简洁性和可读性。这在大型系统中尤其重要,因为它允许数据库管理员在不改变应用程序代码的情况下优化...

    JDBC与Java数据库编程.pdf

    - **CallableStatement**:用于执行存储过程或函数的Statement。 - **ResultSet**:表示数据库结果集的数据表,通常通过执行查询语句生成。 - **SQLException**:所有JDBC异常的基类,用于处理数据库操作中可能出现...

    web JDBC数据库开发接口

    JDBC的结构; SQL指令操作数据库以及常用的SQL函数的使用; JDBC访问数据库的四种基本形式、事务处理; 分页显示以及如何利用JavaBean操作数据库; 访问Oracle数据库以及操作Oracle存储过程;

    java调用存储过程源码 sql数据库

    在Java编程中,调用SQL数据库的存储过程是一项常见的任务,尤其在处理复杂业务逻辑或批量数据操作时。本文将详细介绍如何使用Java来调用存储过程,并探讨相关的数据库设计原则。 首先,理解存储过程的基本概念至关...

Global site tag (gtag.js) - Google Analytics