在Java中調用帶參數的存儲過程

JDBC調用存儲過程: CallableStatementjava

在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)
is
begin
if (v_a > v_b) then
v_ret := v_a;
else
v_ret := v_b;
end  if ;
v_temp := v_temp +  1 ;
end;
相關文章
相關標籤/搜索