`
liss
  • 浏览: 844254 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA调用ORACLE存储过程小结

    博客分类:
  • JDBC
阅读更多

JAVA调用ORACLE存储过程小结

一、无返回值的存储过程

       存储过程为:(该过程为向dept添加部门)

create or replace procedure adddept(deptno number,dname varchar2,loc varchar2)

as

begin

     if deptno is not null then

        insert into dept values(deptno,dname,loc);

        commit;

     else

         null;

     end if;

end adddept;

/

然后在JAVA里调用就用下面的代码

public class TestProcedure{

       Connection conn = null;

       CallabledStatement cstmt = null;

       PreparedStatement pstmt = null;

       String url=”jdbc:oracle:thin:@localhost:1521:mydb”;

       String driver=”oracle.jdbc.driver.OracleDriver”;

       String name=””

       public TestProcedure {

              try{

                     Class.forName(dirver);

                     Conn=DriverManager.getConnection(url,”scott”,”tiger”);

                     cstmt=conn,prepareCall(“{call adddept(?,?,?)}”);

                     cstmt.setInt(1,80);

                     cstmt.setString(2,”总部”);

                     cstmt.setString(3,”beijing”);

                     cstmt.executeUpdate();

              Systemt.out.println(“success”);

              }catch(Exception e){

e.printStackTrace();

}finally{

       cstmt.close();

conn.close();

}

       }

}

【注:dept表为oracle数据库方案scott中的一个表】

 

二、有返回值的存储过程(非列表)

IN表示向存储过程传递参数,OUT表示从存储过程返回参数

存储过程为:(根据雇员号查工资)

create or replace procedure selemp_sal (para1 in number,para2 out number)

as

begin

select sal into para2 from emp where empno=para1;

end selemp_sal;

/

在数据库的SQL窗口中调用:

declare    

vstr2   varchar2(10);

begin 

 selemp_sal(7654,vStr2);--//7654为雇员号

 dbms_output.put_line(vStr2);  

end;

JAVA里调用就用下面的的代码:

public class SelSalary(){

       public SelSalary(){}//构造函数

       public static void main(String[] args){

              String driver=”oracle.jdbc.driver.OracleDriver”;

              String url=”jdbc:oracle:thin:@localhost:1521:mydb”;

              Statement stmt=null;

              ResuultSet rs=null;

Connection conn=null;

try{

       Class.forName(driver);

       conn=DriverManager.getConnection(url,”scott”,”tiger”);

       CallableStatement cstmt=null;

       cstmt=conn..prepareCall(“{call selemp_sal(?,?)}”);

       cstmt..setInt(1, 7654);

       cstmt.registerOutparameter(2,Types.VARCHAR);

       cstmt.execute();

       String thesal=cstmt.getString(2);

       System.out.pringln(“The people’s salary is ”+thesal);

}catch(Exception ex){

ex.printStatckTrace();

}finally{

       if(rs!=null) rs.close();

       if(stmt!=null) stmt.close();

       if(conn!=nill) conn.close();

}

}

}

}

【注:emp表为oracle数据库方案scott中的一个表,

这里的cstmt.getString(2) 中的数值2并非任意的,而是和存储过程的out列对应的,如果out是在第一个位置,那就是cstmt.getString(1),如果out是在第三个位置,那就是cstmt.getString(3),当然可以有多个返回值,那就是多增加几个out参数啦】

三、返回列表

       由于oracle 存储过程没有返回值,他的所有返回值都是通过out参数来替代的,列表也同样不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了,所以要分两部分,

1. 建立一个程序包,如下:

       create or replace package mypackage as

       TYPE my_cursor is REF CURSOR;

       end mypackage;

2.建立存储过程,存储过程为:(查询工资等级)

       create or replace procedure selsal_grade (p_cur out mypackage.my_cursor)

as

begin

open p_cur for select * from salgrade;

end selsal_grade;

可以看到,它把一个游标(可以理解为一个指针),作为一个out参数来返回的

OracleSQL窗口中调用用下面的代码:

declare    

v_cur mypackage.my_cursor;

grad salgrade%rowtype;

begin

 selsal_grade(v_cur);

 dbms_output.put_line('等级   最高工资   最低工资');

 loop

 fetch v_cur into grad;

 exit when v_cur%NOTFOUND;

 dbms_output.put_line(grad.grade||'      '||grad.losal||'      '||grad.hisal); 

 end loop;

 --dbms_output.put_line(v_cur%rowcount); 

 close v_cur;

end;

JAVA里调用就用下面的代码:

public class selectGrade(){

public selectGrade(){};//构造函数

public static void main(String[] args){

              String driver=”oracle.jdbc.driver.OracleDriver”;

              String url=”jdbc:oracle:thin:@localhost:1521:mydb”;

              Statement stmt=null;

              ResuultSet rs=null;

Connection conn=null;

 

try{

       Class.forName(driver);

       conn=DriverManager.getConnection(url,”scott”,”tiger”);

       CallableStatement cstmt=null;

       cstmt=conn..prepareCall(“{call selsal_grade (?)}”);

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

       cstmt.execute();

       rs=(ResultSet) cstmt.getObject(1);

       System.out.println(“等级   最高工资   最低工资”);

       while(rs.next())

{

              System.out.println(rs.getString(1)+”  ”|+rs.getString(2)+”  ”+rs.getString(3));

}

              }catch(Exception e)

              {

                     e.printStackTrace();

} finally{

       if(rs!=null) rs.close();

       if(stmt!=null) stmt.close();

       if(conn!=nill) conn.close();

}

}

}

分享到:
评论

相关推荐

    Java调用oracle存储过程总结

    通过这些步骤,你可以成功地从Java应用程序中调用Oracle存储过程。确保正确配置JDBC驱动,理解存储过程的参数类型,并熟悉JDBC API,这样就能高效地实现数据交互了。在开发过程中,可以参考Oracle的官方文档以及各种...

    用java调用oracle存储过程总结

    } } catch (SQLException ex1) { } } }}```总结与注意事项调用Oracle存储过程在Java中主要使用`CallableStatement`,通过占位符`?`来代表参数,并使用`setXXX`方法设置IN参数,`registerOutParameter`注册OUT或IN...

    java调用Oracle存储过程的代码

    总结,通过Java调用Oracle存储过程,我们需要配置JDBC驱动,建立数据库连接,创建CallableStatement,设置参数,执行存储过程,并处理返回的结果。在这个例子中,我们展示了如何调用一个简单的存储过程并打印返回的...

    JAVA调用ORACLE存储过程小结[文].pdf

    总结来说,Java调用Oracle存储过程主要涉及以下步骤: 1. 加载Oracle JDBC 驱动。 2. 建立数据库连接。 3. 创建`CallableStatement`对象,并设置调用存储过程的SQL语句。 4. 绑定输入参数。 5. 注册输出参数(如有)...

    java调用oracle存储过程入门实例 增删改查

    总结来说,这个入门实例涵盖了使用Java通过JDBC调用Oracle存储过程进行CRUD操作的基本流程,以及利用DOM4J解析XML配置文件和`ThreadLocal`管理数据库连接的方法。这样的设计使得程序更加模块化,易于维护,同时也...

    JAVA调用ORACLE存储过程

    ### JAVA调用ORACLE存储过程知识点详解 #### 一、背景与概述 在现代软件开发过程中,集成多种技术栈是常态。特别是在企业级应用中,Java 和 Oracle 数据库的组合非常常见。通过 Java 调用 Oracle 存储过程不仅能够...

    用java调用oracle存储过程总结.pdf

    以下是关于如何使用Java调用Oracle存储过程的总结: 首先,我们来看无返回值的存储过程。创建一个名为`TESTA`的Oracle存储过程,它接受两个VARCHAR2类型的输入参数`PARA1`和`PARA2`,并将它们插入到`HYQ.B_ID`表中...

    用java调用oracle存储过程总结.docx

    ### 使用Java调用Oracle存储过程知识点总结 #### 一、无返回值的存储过程 **存储过程定义**: ```sql CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2, PARA2 IN VARCHAR2) AS BEGIN INSERT INTO HYQ.B_ID ...

    用java调用oracle存储过程总结文.pdf

    总结来说,Java调用Oracle存储过程涉及到的关键步骤包括:加载JDBC驱动,建立数据库连接,创建`CallableStatement`对象,设置输入参数,注册输出参数,执行存储过程,以及处理返回值和关闭资源。理解这些步骤对于...

    JAVA调用ORACLE存储过程通用类

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

    用java调用oracle存储过程总结[文].pdf

    总结来说,Java调用Oracle存储过程主要涉及以下步骤: 1. 加载Oracle驱动(`Class.forName`)。 2. 建立数据库连接(`DriverManager.getConnection`)。 3. 创建`CallableStatement`对象,设置参数(`setString`或`...

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

    总结一下,Java调用Oracle存储过程并处理游标的关键步骤包括: 1. 创建Oracle存储过程,包含一个或多个OUT参数,这些参数为游标。 2. 在Java中,使用`CallableStatement`调用存储过程,注册OUT参数为`OracleTypes....

    java调用oracle存储过程

    ### Java调用Oracle存储过程详解 #### 一、概述 在企业级应用开发中,数据库存储过程被广泛用于实现复杂的业务逻辑处理。由于其高效性和安全性,存储过程常常成为首选方案之一。Java作为主流的企业级开发语言之一...

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

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

    java调用oracle存储过程精彩总结..docx

    Java调用Oracle存储过程是数据库操作中常见的任务,特别是在企业级应用开发中。Oracle存储过程是一种在数据库中预编译的SQL和PL/SQL代码集合,可以提高性能、封装复杂逻辑,并提供更好的安全性。以下是对Java调用...

Global site tag (gtag.js) - Google Analytics