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一个套路,不在赘述,上面示例即是。




你可能感兴趣的:(mysql,存储过程)