標籤:
JDBC調用預存程序: CallableStatement在Java裡面調用預存程序,寫法那是相當的固定:Class.forName(....Connection conn = DriverManager.getConnection(..../***p是要調用的預存程序的名字,預存程序的4個參數,用4個?號預留位置代替*其餘地方寫法固定*/CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}");/***告訴JDBC,這些個參數,哪些是輸出參數,輸出參數的類型用java.sql.Types來指定*下面的意思是,第3個?和第4個?是輸出參數,類型是INTEGER的*Types後面具體寫什麼類型,得看你的預存程序參數怎麼定義的*/cstmt.registerOutParameter(3, Types.INTEGER);cstmt.registerOutParameter(4, Types.INTEGER);/***在我這裡第1個?和第2個?是輸入參數,第3個是輸出參數,第4個既輸入又輸出*下面是設定他們的值,第一個設為3,第二個設為4,第4個設定為5*沒設第3個,因為它是輸出參數*/cstmt.setInt(1, 3);cstmt.setInt(2, 4);cstmt.setInt(4, 5);//執行cstmt.execute();//把第3個參數的值當成int類型拿出來int three = cstmt.getInt(3);System.out.println(three);//把第4個參數的值當成int類型拿出來int four = cstmt.getInt(4);System.out.println(four);//用完別忘給人家關了,後開的先關cstmt.close();conn.close();JDBC調用預存程序,掌握這一個程式足夠了.以下是上面程式使用的預存程序的代碼,我用的是Oracle資料庫,不過不論是什麼資料庫,對於你的程式,JDBC這一端寫法都是一樣的.create or replace procedure p(v_a in number,v_b number,v_ret out number,v_temp in out number)isbeginif(v_a > v_b) thenv_ret := v_a;elsev_ret := v_b;end if;v_temp := v_temp + 1;end;
在Java中調用帶參數的預存程序