java中调用存储过程(sqlserver)
老板给我一个sqlserver的存储过程让我写一个接口返回随机单据号
DECLARE @FBillNo VARCHAR(50); EXEC +@FDBName+.dbo.p_BM_GetBillNo 1,@FBillNo OUT SELECT @FBillNo
查了很多资料,终于在不经意间看着那些资料恍然大悟!
先上代码:
public String getBillNo(String AreaDB) { String BillNo = ""; try { // driver-class-name Class.forName(SQLSERVERDRIVER); // yml文件数据库配置 Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); // 重点是这一句代码,下方解释 String call = "{ call " + AreaDB +".dbo.p_BM_GetBillNo(?,?) }"; CallableStatement callStatement = conn.prepareCall(call); callStatement.setInt(1,1); // 传入参数 callStatement.registerOutParameter(2, Types.VARCHAR); // 返回结果 callStatement.execute(); BillNo = callStatement.getString(2); callStatement.close(); conn.close(); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } return BillNo; }
看了很多资料都是{ call get**(?,?) },一开始根本看不懂,后来仔细一想,第一个代码段里最重要的是第二行,第一三行可以忽略;入参和结果都需要配置,知识点又增加了,真好!