zoukankan      html  css  js  c++  java
  • 存储过程--得到新序列号

    CREATE DEFINER=`ggs`@`%` PROCEDURE `pr_billno_nextval`(`p_table_name` varchar(100),
         `p_field_name` varchar(100),
         `p_rule_value` varchar(100),out `l_cur_val` bigint(20))
    BEGIN
    
        SELECT
            SEQUENCE_CUR_VALUE INTO l_cur_val
        FROM
            RIV_BILL_NO_SEQ
        WHERE
            table_name = p_table_name
        AND 
            field_name = p_field_name
        AND 
            rule_value = p_rule_value;
     -- FOR UPDATE;
    
        IF l_cur_val IS NOT NULL THEN
            UPDATE
                RIV_BILL_NO_SEQ
            SET
                SEQUENCE_CUR_VALUE = IF (
                    (SEQUENCE_CUR_VALUE + SEQUENCE_INCREMENT) > SEQUENCE_MAX_VALUE,
                    IF (
                        SEQUENCE_CYCLE = TRUE,
                        SEQUENCE_MIN_VALUE,
                        NULL
                    ),
                    SEQUENCE_CUR_VALUE + SEQUENCE_INCREMENT
                )
            WHERE
                table_name = p_table_name
            AND 
                field_name = p_field_name
            AND 
                rule_value = p_rule_value
            ;
        END IF;
    
        SELECT (l_cur_val+1) into l_cur_val; 
    
    END
    CREATE TABLE `riv_bill_no_seq` (
      `TABLE_NAME` varchar(100) NOT NULL,
      `FIELD_NAME` varchar(100) NOT NULL,
      `RULE_VALUE` varchar(100) NOT NULL,
      `SEQUENCE_INCREMENT` int(11) unsigned NOT NULL DEFAULT '1',
      `SEQUENCE_MIN_VALUE` int(11) unsigned NOT NULL DEFAULT '1',
      `SEQUENCE_MAX_VALUE` bigint(20) unsigned NOT NULL DEFAULT '18446744073709551615',
      `SEQUENCE_CUR_VALUE` bigint(20) unsigned DEFAULT '1',
      `SEQUENCE_CYCLE` tinyint(4) NOT NULL DEFAULT '0',
      PRIMARY KEY (`TABLE_NAME`,`FIELD_NAME`,`RULE_VALUE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        /**
         * call function : FUN_BILLNO_NEXTVAL
         * */
        private Long getBillNoNextVal(final String tableName, final String fieldName, final String ruleValue) {
    
            Long nextVal = this.jdbcTemplate.getJdbcOperations().execute(new CallableStatementCreator() {
                @Override
                public CallableStatement createCallableStatement(Connection con) throws SQLException {
                    CallableStatement call = con.prepareCall("{call pr_billno_nextval(?,?,?,?)}");
                    call.setObject(1, tableName);
                    call.setObject(2, fieldName);
                    call.setObject(3, ruleValue);
                    call.registerOutParameter(4, Types.BIGINT);
                    return call;
                }
            }, new CallableStatementCallback<Long>() {
                @Override
                public Long doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
                    cs.execute();
                    return cs.getLong(4);
                }
            });
            return nextVal;
        }
    /**
         * 调用mysql存储过程
         * 
         * @return
         */
        @Override
        public List<Object[]> getUser() {
    
            List<Object[]> rtnObjs = new ArrayList<Object[]>();
    
            rtnObjs = this.getJdbcTemplate().execute("{call getuser()}",
                    new CallableStatementCallback<List<Object[]>>() {
                        @Override
                        public List<Object[]> doInCallableStatement(
                                CallableStatement cs) throws SQLException,
                                DataAccessException {
                            List<Object[]> objects = new ArrayList<Object[]>();
                            ResultSet rs = cs.executeQuery();
                            while (rs.next()) {
                                Object[] objArr = new Object[4];
                                objArr[0] = rs.getLong("ID");
                                objArr[1] = rs.getTimestamp("createtime");
                                objArr[2] = rs.getString("password");
                                objArr[3] = rs.getString("username");
    
                                objects.add(objArr);
                            }
                            return objects;
                        }
                    });
    
            return rtnObjs;
    
        }
  • 相关阅读:
    2019.8.16
    一种抠环的办法
    [HAOI2015]树上染色
    有关树形背包
    2019.7.27
    有关矩阵快速幂
    2019.7.25
    欧拉函数(转载)
    2019.7.22
    phpstudy集成环境安装redis扩展
  • 原文地址:https://www.cnblogs.com/tonggc1668/p/6474723.html
Copyright © 2011-2022 走看看