zoukankan      html  css  js  c++  java
  • java调用Oracle存储存储过程

    数据库表和增删改的procedure参照(http://www.cnblogs.com/J-wym/p/3292913.html)

     1.测试添加数据的procedure

    public void testProcedure() {
            Connection con = getConnction();
    
            // **1.测试添加数据的procedure
              String procedure = "{call users_insert_proc(?,?,?,?) }";
    
            CallableStatement cs = null;
            try {
                 cs = con.prepareCall(procedure);
                 cs.setInt(1, 123450);
                 cs.setString(2, "xxiaox");
                 cs.setString(3, "Ww342864");
                 cs.setString(4, "742621646@qq.com");
                 } catch (SQLException e) {
                  e.printStackTrace();
            }
            try {
                 cs.executeUpdate();
            } catch (SQLException e) {
                   e.printStackTrace();
            }
        }
     
     
    
    

    2.测试删除数据的procedure

    public void testDelPro() {
            Connection con = getConnction();
    
            // **2.测试删除数据的procedure
             String procedure = "{call delete_usersbyid_proc(?) }";
    
            CallableStatement cs = null;
            try {
                 cs = con.prepareCall(procedure);
                          cs.setInt(1, 123450);
                 } catch (SQLException e) {
                  e.printStackTrace();
            }
            try {
                 cs.executeUpdate();
            } catch (SQLException e) {
                   e.printStackTrace();
            }
        }

    3.测试更新数据的procedure

    public void testDelPro() {
            Connection con = getConnction();
    
            // **3.测试更新数据的procedure
            String procedure = "{call users_updatebyId_proc(?,?,?,?) }";
    
            CallableStatement cs = null;
            try {
                 cs = con.prepareCall(procedure);
             cs.setInt(1, 101); 
             cs.setString(2, "小第三方的浩"); 
             cs.setString(3, "asdf342864");
             cs.setString(4, "742621646@qq.com");
                 } catch (SQLException e) {
                  e.printStackTrace();
            }
            try {
                 cs.executeUpdate();
            } catch (SQLException e) {
                   e.printStackTrace();
            }
        }

    4.测试查找数据的procedure

          a)建包体

          b)创建查询的procedure

    create or replace package userspackage as
    type users_cursor is ref cursor;
    end  userspackage;
    create or replace procedure users_packageAll(
    s_id in number ,u_cursor out userspackage.users_cursor) is
    begin
       if s_id = 0 then
           open u_cursor for select id,name,pword,email  from users;
          else
           open u_cursor for select id,name,pword,email  from users where id=s_id;
          end if;
    
      end;

          c)Java调用

    public void testDelPro() {
            Connection con = getConnction();
    
            // 返回查询procedure
           String procedure = "{call users_packageAll(?,?) }";
    
    
            CallableStatement cs = null;
            try {
                 cs = con.prepareCall(procedure);
                         cs.setInt(1, 0);
         cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
    
                 } catch (SQLException e) {
                  e.printStackTrace();
            }
            try {
                 cs.execute();
                  ResultSet rs = (ResultSet)cs.getObject(2);
                while (rs.next()) {
                  System.out.println(rs.getInt(1) + " " + rs.getString(2));
                }
            } catch (SQLException e) {
                   e.printStackTrace();
            }
        }
  • 相关阅读:
    UVA 10462 Is There A Second Way Left?(次小生成树&Prim&Kruskal)题解
    POJ 1679 The Unique MST (次小生成树)题解
    POJ 2373 Dividing the Path (单调队列优化DP)题解
    BZOJ 2709 迷宫花园
    BZOJ 1270 雷涛的小猫
    BZOJ 2834 回家的路
    BZOJ 2506 calc
    BZOJ 3124 直径
    BZOJ 4416 阶乘字符串
    BZOJ 3930 选数
  • 原文地址:https://www.cnblogs.com/J-wym/p/3294185.html
Copyright © 2011-2022 走看看