创建存储过程查询

创建存储过程查询

DELIMITER $$    // 将标准分隔符 - 分号(;)更改为:$$, 将sql整体传递
CREATE PROCEDURE `getCamreaByCivi`(
	IN civi VARCHAR(255)
	)
BEGIN
	SELECT `NAME`,CAMERAID, FONLINE, PTZTYPE FROM vs_camera WHERE CIVILCODE = civi;
END $$
DELIMITER ;  // 改回来

CALL getCamreaByCivi("650000"); // sql调用

注意:输入的参数名不能和WHERE子句中的CIVILCODE同名,否则相当于WHERE 1=1

java中调用存储过程

// 获取到civilcode对应的摄像头信息
jdbcTemplate.getJdbcOperations().execute(new CallableStatementCreator() {
    @Override
    public CallableStatement createCallableStatement(Connection con) throws SQLException {
        String procedure = "{call getCamreaByCivi(?)}";
        CallableStatement cs = con.prepareCall(procedure);
        cs.setString(1, parentCivilcode);// 设置输入参数的值
        return cs;
    }
}, new CallableStatementCallback() {
    public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
        cs.execute();
        ResultSet rs = cs.getResultSet();
        while (rs.next()) {
            String status = "";
            if (rs.getString("FONLINE").equals("1")) {
                status = "1";
            } else if (rs.getString("FONLINE").equals("0")) {
                status = "-1";
            }
            VsSimpleTree cameraTree = new VsSimpleTree(3, rs.getString("CAMERAID"), parentCivilcode,
                    rs.getString("NAME"), "3", new ArrayList<>(), status, floor+1, Integer.parseInt(rs.getString("PTZTYPE")));
            resultList.add(cameraTree);
        }
        return resultList; // 获取输出参数的值
    }
});
posted @ 2018-12-05 16:39  柴田淳丿星  阅读(835)  评论(0编辑  收藏  举报