日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql实现表单号:表单编码+时间+表单号

發布時間:2025/3/19 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql实现表单号:表单编码+时间+表单号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:mysql+mybatis實現表單號;
表單規則為:表單編碼+生成時間+隨機號
例如:xft201911030056
1、新建表:base_coderole和base_codenumber

SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `base_coderole`; CREATE TABLE `base_coderole` (`vcoderole` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '編碼規則',`prefix` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '前綴',`nlength` double DEFAULT NULL COMMENT '長度',`meno` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '描述' ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `base_codenumber`; CREATE TABLE `base_codenumber` (`Vcodetype` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '表單編碼類型',`nmonth` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '月份',`maxnum` int(11) DEFAULT NULL COMMENT '目前最大號碼' ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1;

2、新建函數

CREATE DEFINER = CURRENT_USER PROCEDURE `GetFormCode`(IN codetype varchar(40),OUT ERRNUM VARCHAR(10) character set utf8, OUT ERRMSG VARCHAR(500) character set utf8) BEGINdeclare VARQZ varchar(500) character set utf8;declare INTLENN INT;declare INTMAXN INT;declare VMONTH VARCHAR(500);declare NROWS INT;declare LROWS INT;select count(1) into NROWS FROM base_coderole where vcoderole = codetype ;IF (NROWS = 0) THENset ERRNUM = 1;set ERRMSG = '未配置該類型的表單'; ELSESELECT prefix,nlength INTO VARQZ, INTLENN FROM base_coderole WHERE vcoderole = codetype;select CONCAT(YEAR(CURDATE()),MONTH(CURDATE())) into VMONTH;SELECT COUNT(1) INTO LROWS FROM base_codenumber WHERE Vcodetype = codetype and nmonth = VMONTH FOR UPDATE ;IF (LROWS > 0) THENSELECT maxnum + 1 INTO INTMAXN FROM base_codenumber WHERE Vcodetype = codetype and nmonth = VMONTH;SET ERRNUM =0;SET ERRMSG = CONCAT(CONCAT(VARQZ,VMONTH),right(concat('000000000000',INTMAXN),INTLENN));UPDATE base_codenumber SET maxnum = maxnum + 1 WHERE Vcodetype = codetype and nmonth = VMONTH; ELSEINSERT INTO base_codenumber(Vcodetype,nmonth,maxnum) VALUES(codetype,VMONTH,1);SET ERRNUM =0;SET ERRMSG = CONCAT(CONCAT(VARQZ,VMONTH),right(concat('000000000000',1),INTLENN));END IF; END IF; END

3、系統調用

{call GetFormCode(#{codetype ,mode=IN ,jdbcType=VARCHAR},#{ERRNUM ,mode=OUT,jdbcType=VARCHAR},#{ERRMSG ,mode=OUT,jdbcType=VARCHAR})}

注意:前臺頁面傳入在base_coderole配置的PXF字段,返回報錯信息或者表單編碼

總結

以上是生活随笔為你收集整理的mysql实现表单号:表单编码+时间+表单号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。