`
kongzimengsheng1
  • 浏览: 68754 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转java oracle 过程集锦

    博客分类:
  • java
阅读更多
Oracle存储过程及JDBC调用大全
关键字: 培训

Oracle存储过程及JDBC调用大全(原创)

-----------------无返回值示例------------------------

存储过程:

·添加学生,如果班级不存在,则先添加班级信息,再添加学生。

create or replace procedure sp_add_stu

(

  p_stu_id t_stu.s_id%type, --参数类型定义为字段类型

  p_s_name t_stu.s_name%type,

  p_c_id t_class.c_id%type

)

as

  num number;

  new_name t_stu.s_name%type;

begin

  --处理姓名(如果不从查询结果取值,用 := )

  new_name := substr(trim(p_s_name),1,8);



  --将查询结果保存到变量,只能用select into

   select count(*) into num from t_class c where c.c_id=p_c_id;

   if(num=0) then

       insert into t_class(c_id,c_name) values(p_c_id,'新班');

    end if;

  

  insert into t_stu(s_id,s_name,c_id,s_sex)

  values(p_stu_id,new_name,p_c_id,'1');

  

  commit;



  dbms_output.put_line('执行完毕');

end;

-----------------在Oracle中调用(无返回值)-----------------

SQL> call sp_add_stu(800,'李小龙',88);



Method called



SQL>



-----------------JDBC调用(无返回值)-----------------

Connection conn = null;

CallableStatement cstmt = null;

conn = DriverManager.getConnection(url, user, password);

String procedure = "{call sp_add_stu(?,?,?)}";

cstmt = conn.prepareCall(procedure);

cstmt.setString(1, "2000");

cstmt.setString(2, "张三);

cstmt.setString(3, "40");

cstmt.executeUpdate();

-----------------返回结果值示例------------------------

·指定参数为out类型即可返回值

/**

存储过程与函数的区别:存储过程可以增删改,可以提交或回滚,而函数不能。

函数只能计算



如处理某个单据(进货单),如输入用户帐号,经过复杂处理以后,

返回此用户的欠费单据号

*/

create or replace procedure sp_value(

id1 in number,

id2 out number

)

as

begin

  id2 := id1*200;

end;



-----------------调用(有简单返回值)----------------

Connection conn = null;

CallableStatement cstmt = null;

conn = DriverManager.getConnection(url, user, password);

String procedure = "{call sp_value(?,?)}";

cstmt = conn.prepareCall(procedure);

--------------------JDBC获取存储过程中的值-------------------

//学号、姓名、班级编号

cstmt.setString(1, "2000");

//注册输出参数

cstmt.registerOutParameter(2, java.sql.Types.INTEGER);

cstmt.executeUpdate();

//从输出参数中获取值

int value = cstmt.getInt(2);

System.out.println("返回: "+value);





-----------------返回结果集示例------------------------

·建包,包中定义游标类型变量

CREATE OR REPLACE PACKAGE TESTPACKAGE  AS

    TYPE Test_CURSOR IS REF CURSOR; --自定义一个引用游标类型

end;



·存储过程返回指定游标类型变量



CREATE OR REPLACE PROCEDURE sp_select_stu

(

p_c_id t_class.c_id%type,

p_cursor       out TESTPACKAGE.Test_CURSOR

自定义变量名   输出  变量所对应的数据类型(在包中自定义的)   

) IS

BEGIN

OPEN p_CURSOR FOR

   SELECT s.stu_id,s.s_name,to_char(s.s_birthday,'yy.mm') FROM t_stu s

   where s.c_id=p_c_id

   order by s.s_name;

END;



-----------------JDBC获取存储过程中的结果集---------------

Connection conn = null;

CallableStatement cstmt = null;

conn = DriverManager.getConnection(url, user, password);

String procedure = "{call sp_select_stu(?,?)}";

cstmt = conn.prepareCall(procedure);

//学号、姓名、班级编号

cstmt.setString(1, "C01");

//注册输出参数

cstmt.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);

cstmt.execute();

//从输出参数中获取值

ResultSet rs = (ResultSet)cstmt.getObject(2);//第2个?所代表的参数



ResultSetMetaData rmd =rs.getMetaData();

while(rs.next()){

for(int i=0;i<rmd.getColumnCount();i++){

  System.out.print(rs.getString(i+1)+" ");

}

System.out.println("");

}

rs.close();
分享到:
评论

相关推荐

    使用java实现oracle存储过程

    使用java实现oracle存储过程。 共有3个小例子。实现的功能 1、无返回值的存储过程 如 insert 2、有返回值的存储过程(非列表)select id from tab 3、返回列表 如:select * from tab 顺便鄙视下csdn,作为一个it...

    java Oracle存储过程分页整理

    Oracle数据库提供了丰富的存储过程功能,使得开发者可以编写自定义的SQL逻辑,结合Java调用来实现复杂的数据处理。本教程将深入探讨如何在Java中调用Oracle存储过程来执行分页查询。 首先,我们需要理解分页的基本...

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

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

    Java调用oracle存储过程通过游标返回临时表

    在Java编程中,与Oracle数据库交互是常见的任务之一,尤其是当需要执行复杂的SQL操作或存储过程时。本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle...

    java调用oracle存储过程返回结果集,Record,cursor参照.pdf

    Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...

    java调用Oracle存储过程的代码

    在Java编程中,与Oracle数据库进行交互是常见的需求,尤其是当需要执行复杂的业务逻辑时,我们通常会使用Oracle存储过程。存储过程是预编译的SQL语句集合,它可以提高性能,封装复杂逻辑,并减少网络通信量。本教程...

    用java调用oracle存储过程

    以上代码展示了如何在Java中调用Oracle数据库的三种类型的存储过程:无返回值的存储过程、有单个返回值的存储过程以及返回列表的存储过程。对于无返回值的存储过程,主要涉及的是参数的输入,通过`execute()`方法...

    Java获取Oracle存储过程返回的Cursor

    在Java编程中,有时我们需要调用Oracle数据库的存储过程,特别是当存储过程返回一个游标(Cursor)时,这种情况在处理大量数据或者分页查询时很常见。游标允许我们逐行处理结果集,而无需一次性加载所有数据,这对于...

    java 与 oracle 存储过程

    Java与Oracle存储过程是数据库应用开发中的重要技术结合,它们在企业级系统中广泛使用,尤其是在数据处理和业务逻辑复杂的场景下。Oracle存储过程是一种在数据库服务器端编写的程序,可以包含一系列SQL语句和控制流...

    java 连接oracle12c 的jar包

    在Java编程环境中,连接Oracle 12c数据库是常见的需求,尤其在开发企业级应用时。Oracle 12c是Oracle公司推出的最新版本的...在开发过程中,正确配置和使用这个驱动包对于构建稳定、高效的Java-Oracle连接至关重要。

    Java调用oracle存储过程总结

    在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或高效数据操作时。本文将全面总结如何使用Java与Oracle存储过程进行交互。 首先,理解Oracle存储过程的基本概念。存储过程是预编译...

    java oracle数据库过程实现jsp分页

    Oracle数据库提供了强大的存储过程功能,可以与Java后端配合,实现高效的分页查询。本篇文章将深入探讨如何利用Java与Oracle数据库过程相结合,实现在JSP页面上的分页展示。 首先,Oracle函数包是组织相关函数和...

    Java连接Oracle数据库的各种方法

    JDBC KPRB主要用于存储过程、触发器等数据库内的Java程序,直接使用当前的数据库会话。 SQLJ是另一种方法,它是一个预编译器,能够将Java源代码中的嵌入式SQL语句转换为Java代码。它的运行机制类似于Oracle的其他...

    Java链接Oracle 存储过程 jdbc BLOG

    在Java编程中,连接Oracle数据库并执行存储过程是常见的任务,尤其在企业级应用中,存储过程被广泛用于实现复杂的业务逻辑和优化数据操作。本文将深入探讨如何使用JDBC(Java Database Connectivity)API来调用...

    Java操作Oracle数据库(建表,插数据,删除)

    Java 操作 Oracle 数据库(建表,插数据,删除) Java 是一种广泛使用的编程语言,而 Oracle 数据库是...我们还解释了 Java 程序的结构和执行过程。通过本文,读者可以了解 Java 操作 Oracle 数据库的基本原理和方法。

    JAVA调用ORACLE存储过程通用类

    ### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...

    java导出oracle数据(单表).pdf

    Java 导出 Oracle 数据(单表) Java 是一种广泛使用的编程语言,Oracle 是一种常用的关系数据库管理系统。在实际应用中,经常需要将 Oracle 数据库中的数据导出到其他文件中,以便进行数据分析、备份或迁移等操作...

    JAVA调用ORACLE存储过程游标使用

    在Java编程中,调用Oracle数据库的存储过程并处理返回的游标是一项常见的任务。Oracle存储过程可以封装复杂的业务逻辑,而游标则用于在结果集上进行迭代,特别是当结果集太大,不适合一次性加载到内存时。下面将详细...

Global site tag (gtag.js) - Google Analytics