1. 程式人生 > >java jdbc 呼叫db2儲存過程 第一節

java jdbc 呼叫db2儲存過程 第一節

呼叫無參儲存過程

      建立儲存過程語句如下

建立無參儲存過程
  • CREATE PROCEDURE "PCCCMALL"."testOne" ()
      SPECIFIC "SQL110512004935601"
      LANGUAGE SQL
      NOT DETERMINISTIC
      EXTERNAL ACTION
      MODIFIES SQL DATA
      INHERIT SPECIAL REGISTERS
      OLD SAVEPOINT LEVEL
     
      begin
       DECLARE  member_id  varchar(20) DEFAULT 'test';
       DECLARE  fullname  varchar(20) DEFAULT 'test';
       FOR v AS cur1 CURSOR FOR
          SELECT member_id FROM prod_order  where order_status='05'
       DO
              SET fullname = v.member_id ;
              insert into  member_basic_info(member_id) VALUES (fullname);
              commit;
      END FOR;
      END
     

呼叫語句如下

呼叫儲存過程
  • String JDBCDriver = "com.ibm.db2.jcc.DB2Driver";
      String DbSource = "jdbc:db2://127.0.0.1:50000/test";
      Connection conn =null;
      CallableStatement cs=null;
      try {
       Class.forName(JDBCDriver);
          conn = DriverManager.getConnection(DbSource, "XXXXX",
         "XXXXX");
          cs = conn.prepareCall("call testOne()");
  •    cs.execute();
       conn.close();
  •   }catch (SQLException e) {
       e.printStackTrace();
      } catch (ClassNotFoundException e) {
       e.printStackTrace();
      }finally{
       if(cs!=null){
           try {
           cs.close();
       } catch (SQLException e) {
        e.printStackTrace();
       }
       }
       if(conn!=null){
        try {
         conn.close();
        } catch (SQLException e) {
         e.printStackTrace();
        }
       }
      }

帶有輸入引數的儲存過程

輸入引數儲存過程
CREATE PROCEDURE  insql (IN inparam varchar(255))
LANGUAGE SQL
BEGIN
DECLARE v_inparam CHAR(3);
SET v_inparam = inparam;
CASE v_inparam
        WHEN 'A00' THEN
           insert into "TEMP" values('angelo','A00');
        WHEN 'B01' THEN
           insert into "TEMP" values('angelo','B01');
        else
            insert into "TEMP" values('fucking_code','B01');
END CASE ;
END ;
呼叫語句
  • String JDBCDriver = "com.ibm.db2.jcc.DB2Driver";
      String DbSource = "jdbc:db2://127.0.0.1:50000/test";
      Connection conn =null;
      CallableStatement cs=null;
      try {
       Class.forName(JDBCDriver);
          conn = DriverManager.getConnection(DbSource, "XXXXX",
         "XXXXX");
          cs = conn.prepareCall("call  insql (?)");
       cs.setString(1, "A0");
  •    cs.execute();
       conn.close();
  •   }catch (SQLException e) {
       e.printStackTrace();
      } catch (ClassNotFoundException e) {
       e.printStackTrace();
      }finally{
       if(cs!=null){
           try {
           cs.close();
       } catch (SQLException e) {
        e.printStackTrace();
       }
       }
       if(conn!=null){
        try {
         conn.close();
        } catch (SQLException e) {
         e.printStackTrace();
        }
       }
      }

帶輸入和輸出引數儲存過程


create procedure   inoutsql(IN  param varchar(255),out outV varchar(255))
language sql
begin
declare   v_param varchar(20);
set v_param = param;
  CASE param
        when 'a' then
        set  outV = v_param || 'a';
        when 'b' then
        set  outV = v_param || 'b';
        else
         set  outV = v_param || 'c';
END CASE ;
end;
呼叫語句
  • String JDBCDriver = "com.ibm.db2.jcc.DB2Driver";
      String DbSource = "jdbc:db2://127.0.0.1:50000/test";
      Connection conn =null;
      CallableStatement cs=null;
      try {
       Class.forName(JDBCDriver);
       conn = DriverManager.getConnection(DbSource, "XXXXX",
         "XXXXXX");
       cs = conn.prepareCall("call inoutsql(?,?)");
       cs.setString(1, "A0");
       cs.registerOutParameter(2, Types.VARCHAR);
       cs.execute();
       String xm = cs.getString(2);
       System.out.println("end:"+xm);
       conn.close();
      
      }catch (SQLException e) {
       e.printStackTrace();
      } catch (ClassNotFoundException e) {
       e.printStackTrace();
      }finally{
       if(cs!=null){
        try {
         cs.close();
        } catch (SQLException e) {
         e.printStackTrace();
        }
       }
       if(conn!=null){
        try {
         conn.close();
        } catch (SQLException e) {
         e.printStackTrace();
        }
       }
      }

                                                                                未完待續