--數據庫中存儲過程的調用
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));
}