`
wangronaldo
  • 浏览: 98280 次
  • 性别: 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();


分享到:
评论

相关推荐

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

    JDBC 连接 MySQL 数据库,进行增删该查,在控制台输入输出数据,不涉及jsp和html,加入存储过程和函数的调用

    web JDBC数据库开发接口

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

    jdbc连接数据库的方式2

     在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。  9、使用Object...

    自己封装的JDBC工具类源码

    5、调用存储过程; 6、调用函数返回一个String,int结果; 7、调用过程返回游标并封装到list返回(包括包中过程); 8、调用函数返回游标并封装到list中返回(包括包中函数); 其中,与数据库的连接声明成了...

    groovy将JDBC中oracle存储过程游标转换为多层json

    本例是我工作中的一些实操例子,亦是我工作日志,记录在此,既可作为我自己的总结,也可以此分享给同行借鉴。 入参是字符串格式的xml,目的...3.JDBC调用存储过程语句 4.创建Groovy脚本 5.xml入参示例 6.json出参示例

    如何从 Java 存储过程将 JDBC ResultSet 作为 Ref Cursor 返回.doc

    本文档演示如何从 Java 存储过程将 JDBC ResultSet 作为 REF CURSOR 返回。JDBC ResultSet 是一个表示数据库的数据表,通常通过执行查询数据库的语句产生该表。REF CURSOR 是 PL/SQL 中相应的类型。Java 存储过程的...

    调用存储过程

    如何在java中调用存储过程 使用回调函数调用,数据库驱动用jdbc

    数据库课程设计--图书管理系统.doc

    可采用ADO,ODBC,OLE DB或JDBC连接数据库, 并调用系统存储过程、自定义存储过程、函数等。 五、进度安排 第1周: 数据库系统概念模型、数据模型设计,创建数据库以及相关对象; 第2周: 前台程序开发,撰写报告,...

    Java数据库编程宝典3

    13.2.2 调用存储过程 13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理图像和文档 14.1 大对象...

    尚硅谷_佟刚_JDBC.pptx

    15. 使用 JDBC 调用函数 & 存储过程(视频24) 16. 课件及源码 ------------------------------------ 讲师:佟刚 尚硅谷教学总监   学员昵称"刚哥",在IT教育培训行业摸爬滚打多年,培养过N多学员,一个对教学...

    数据库系统原理与开发-数据库连接技术(ODBC).pdf

    … … 由应用数据库设计人员提供 由操作系统提供 由各数 据库厂 商提供 驱动程序是一个用于支持 ODBC函数调用的模块,通 常是一个动态链接库DLL。 不同RDBMS的驱动程序是 不同的。每种数据库都要向 ODBC驱动程序...

    Firebird数据库中文版

    使用PSQL(Procedure SQL),你可以创建强大的存储过程来处理服务上的所有数据,你可以使用select Stored Procedure的形式,使用存储过程,以得到一个虚拟的表结构的结果。这样的话,你就可以很容易的在报表中使用它。 ...

    Oracle 10g 网格数据库研讨会33个PPT下载

    用Java、JDBC和Web服务进行Oracle 数据库 10g程序设计 用Oracle 数据库10g构建高性能的企业XML应用系统 在亚太区,Oracle坚不可摧的Linux支持 技术-Linux 在亚太区,Oracle坚不可摧的Linux支持 技术-translated ...

    Java数据库编程宝典2

    13.2.2 调用存储过程 13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理图像和文档 14.1 大对象...

    Java数据库编程宝典1

    13.2.2 调用存储过程 13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理图像和文档 14.1 大对象...

    面试葵花宝典

    存储过程和函数的区别存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

    Java数据库编程宝典4

    13.2.2 调用存储过程 13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理图像和文档 14.1 大对象...

    JavaWeb实战开发

    6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据? ? ?7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)? ? ?8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与...

Global site tag (gtag.js) - Google Analytics