SQLServer递归存储过程和java调用
递归存储过程(根据部门id获取公司名称)
create proc getCompanyName @deptId int, @companyName varchar(50) output as declare @superDeptId int; select @superDeptId = SUP_BUDGET_DEP,@companyName = budget_dep_name from uf_BM_budget_dep where id =@deptId; if (@superDeptId = 0) begin print @companyName; end else begin exec getCompanyName @superDeptId,@companyName output; end begin insert into student(id,name) values(@deptId,@companyName); end
java调用
public static void main(String[] args) { Connection conn = null; try { conn = new GxJdbc().getCon(); CallableStatement call = conn.prepareCall("{call getCompanyName(?,?)}"); call.setInt(1,185); call.registerOutParameter(2, Types.VARCHAR); call.execute(); String name = call.getString(2); System.out.println("name: "+name); } catch (Exception e) { e.printStackTrace(); }finally { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }