mysql、SQL Server存儲過程及jdbc

--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一個套路,不在贅述,上面示例便是。
相關文章
相關標籤/搜索