--mysql存儲過程實例: create procedure sp_test(in id int, out ename varchar(50)) --注意這裏沒有遊標做爲out參數,固然多個in和out道理同樣,參數本身加。 begin select e.name into ename from emp e where e.id=id; select * from emp; --第一個結果集 select * from dept; --第二個結果集 end
public static void testCursor() { Connection conn = DBUtil.getConnection(); try { CallableStatement cs = conn.prepareCall("{call sp_test(?,?)}"); cs.registerOutParameter(2, Types.VARCHAR); cs.setInt(1, 2); //判斷執行是否爲true,若是爲true,則迭代結果集 Boolean hadResults = cs.execute(); System.out.println(cs.getString(2)); while(hadResults){ //爲true則開始迭代結果集 ResultSet rs = cs.getResultSet(); ResultSetMetaData rsmd = rs.getMetaData(); int count = rsmd.getColumnCount(); for (int i = 0; i < count; i++) { String columName = rsmd.getColumnName(i+1); String columTypeName = rsmd.getColumnTypeName(i+1); String columClass = rsmd.getColumnClassName(i+1); int columLength = rsmd.getColumnDisplaySize(i+1); System.out.println(columName+"--"+columTypeName+"--"+columClass+"--"+columLength); } System.out.println("-----------------"); //判斷是否還有結果集 hadResults = cs.getMoreResults(); } } catch (SQLException e) { e.printStackTrace(); } }
--SQL Server存儲過程實例 create PROCEDURE test_cursor @pro_id int, @pro_name varchar(50) output --可多個輸入輸出參數自個加 AS BEGIN select @pro_name=e.name from emp e where e.id=@pro_id; --注意語法區別 select * from emp; --結果集1 select * from dept; --結果集2 end; --java中調用SQL Server存儲過程和mysql一個套路,不在贅述,上面示例便是。