SQL server 创建存储过程
一、基本语句,剩下的自己组合。
ALTER proc getStudentNum(@param nvarchar(50),@StuNum int output) as select @StuNum=count(*) from BASE_LOG_INFO where CREATEOPER=@param
1、语句结构,上面那个就是
2、写参数测试
3、结果
二、Java调用
import java.sql.*; public Map getEventComplete(HttpServletRequest request) { String orgid = StringUtil.getStringValue(map.get("orgid")); Map<String,Object> resultMap = new HashMap<>(); //查询事件上报总数 Map<String, ?> stringMap = new ExtendEvent(RequestUtil.getMap(request)).countEventNum(); Map<String,String> yblMap = new HashMap<>(); Object data = stringMap.get("data"); Object total = ((HashMap) ((ArrayList) data).get(0)).get("total"); //数据库等配置 String username = PropertyUtil.getPropertyValue("jdbc.properties", "jdbc.username"); String password = PropertyUtil.getPropertyValue("jdbc.properties", "jdbc.password"); String url = PropertyUtil.getPropertyValue("jdbc.properties", "jdbc.url"); String driver = PropertyUtil.getPropertyValue("jdbc.properties", "jdbc.driverClassName"); Connection dbConn = null; CallableStatement stmt = null; try { //开始调用调用存储过程 Class.forName(driver); dbConn = DriverManager.getConnection(url, username, password); //所有的输入+输出参数。 String call= "{call bigscreen_eventfulfil_ybj(?,?,?,?)}; "; stmt = dbConn.prepareCall(call);// 调用存储过程 //写参数下标,从1开始,一共四个参数 stmt.setString(1,orgid); stmt.registerOutParameter(2,Types.VARCHAR); //声明输出参数是什么类型的 stmt.registerOutParameter(3,Types.VARCHAR); //声明输出参数是什么类型的 stmt.registerOutParameter(4,Types.VARCHAR); //声明输出参数是什么类型的 stmt.execute(); String today_num=stmt.getString(2); //获得输出参数2 String week_num=stmt.getString(3);//获得输出参数3 String month_num=stmt.getString(4);//获得输出参数4 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } //关闭 finally { try { if(stmt!=null){ stmt.close();} if(dbConn!=null){dbConn.close();} } catch (SQLException e) { e.printStackTrace(); } } //事件上报总数 resultMap.put("eventTotal",total); return resultMap; }
内容仅供参考,并非百分百解决您的问题。