存儲過程_調用

--數據庫中存儲過程的調用
create a test window
declare
 --字段的聲明
 cid varchar2(20) := 'A1',
 cname varchar2(50) :='ck',
 csex student.sex :='男'
begin
 --執行存儲過程
 --存儲過程名
 名字(cid,cname,csex);
end;

如果存儲過程需要輸出內容,那麼在Test window中是無法執行的,必須轉到command window
並開啓輸出功能
set serveroutput on
然後再執行存儲過程


--java調用存儲過程

無返回 

//test1爲存儲過程名
 Connection conn =  DBHelper.getConnection();
 //獲得調用存儲過程的預處理對象
 CallableStatement cs = conn.prepareCall("{call test1(?,?,?,?)}");
 conn.setAutoCommit(false); //設置爲手動提交
 cs.setInt(1,4);//給?處添加參數,?從1開始記起
 cs.setString(2, "lck");
 cs.setInt(3, 23);
 cs.setString(4, "男");
 cs.execute(); //執行存儲過程
 conn.commit();

有返回[單值]
//test1爲存儲過程名
 Connection conn =  DBHelper.getConnection();
 //獲得調用存儲過程的預處理對象
 CallableStatement cs = conn.prepareCall("{call test1(?)}");
 //註冊輸出參數,給定參數的類型爲遊標,遊標指向了一個結果集合
 cs.registerOutParameter(1,oracle.jdbc.OracleTypes.VARCHAR);//不同的jdbc版本路徑不同
 cs.execute(); //執行存儲過程
 //獲得返回值,下表out參數的爲止,從1開始
 System.out.println(cs.getString(1));
 
 有返回[列表]
//test1爲存儲過程名
 Connection conn =  DBHelper.getConnection();
 //獲得調用存儲過程的預處理對象
 CallableStatement cs = conn.prepareCall("{call test1(?)}");
 //註冊輸出參數,給定參數的類型爲遊標,遊標指向了一個結果集合
 cs.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);//不同的jdbc版本路徑不同
 cs.execute(); //執行存儲過程
 //獲得列表結果集合
 ResultSet rs = cs.getResultSet();
 //遍歷結果集合
 while(rs.next){//如果集合存在下一行數據
  System.out.println(rs.getString(1));
 }
 
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章