首页>java频道>java教程>正文
Java JDBC调用Oracle存储过程

www.zige365.com 2010-6-7 10:55:47 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
);  
  •      conn.setAutoCommit(false);  
  •  
  •      conn=DBConnection.getDBConnection().getConnection();  
  •  
  •      String spName="{call sp_add_emp2(?,?,?,?,?)}";  
  •      CallableStatement cstmt=conn.prepareCall(spName);  
  •      cstmt.setInt(1,1111);  
  •      cstmt.setString(2, "qqqq");  
  •      cstmt.setInt(3, 50);  
  •      cstmt.setString(4, "pppp");  
  •      cstmt.registerOutParameter(5, java.sql.Types.INTEGER);  
  •      cstmt.executeUpdate();  
  •      int i = cstmt.getInt(5);  
  •      System.out.println(i);  
  •      cstmt.close();  
  •      conn.close(); 
  • 3.需求同上, 并返回该部门的员工信息(工号和姓名)。(返回一个游标)

    --创建存储过程如下

    Sql代码

    --1.建包    

    1. CREATE OR REPLACE PACKAGE my_pak AS     
    2.    TYPE my_cus IS REF CURSOR   ;      
    3. END my_pak;     

    --2.写存储返回过程    

    1. CREATE OR REPLACE PROCEDURE sp_add_emp3(      
    2.     v_empno emp.empno%TYPE,      
    3.     v_ename emp.ename%TYPE,      
    4.     v_deptno dept.deptno%TYPE,      
    5.     v_dname dept.dname%TYPE,      
    6.      
    7.     p_cus OUT my_pak.my_cus      
    8. )AS     
    9.     num1 NUMBER;      
    10.     num2 NUMBER;      
    11. BEGIN     
    12.      
    13. OPEN p_cus FOR select empno,ename into v_empno,v_ename  from emp where deptno =v_deptno      
    14.    SELECT COUNT(*) INTO num1 FROM dept WHERE deptno=v_deptno;      
    15. IF(num1=0) THEN     
    16.    INSERT INTO dept(deptno,dname) VALUES(v_deptno,v_dname);      
    17. END IF;      
    18.    SELECT COUNT(*) INTO num2 FROM emp WHERE empno=v_empno;      
    19. IF(num2=0)THEN     
    20.    INSERT INTO emp(empno,ename,deptno) VALUES(v_empno,v_ename,v_deptno);      

      本新闻共6页,当前在第4页  1  2  3  4  5  6  

    我要投稿 新闻来源: 编辑: 作者:
    相关新闻
    几种如何减少JDBC连接池开销的方法
    JSP JDBC来连接SQL Server 2005的方法
    研究分析JDBC技术在数据库连接池上的应用
    JDBC连接Sybase数据库的三种方法
    JDBC数据源的几种形式