单据编号自动生成-SQL方案

不同时间段的几个项目都有单据编号的需求,如果底层用的数据存储,则此方案的集成及使用非常方便,特意整理并分享出来。

创建编号定义表ticket_type

DROPTABLE IF EXISTS `ticket_type`;

CREATETABLE `ticket_type` (

  `TT_CODE` varchar(8) COLLATE utf8mb4_binDEFAULT NULL COMMENT '类型编号',

  `TT_NAME` varchar(20) COLLATE utf8mb4_binDEFAULT NULL COMMENT '类型名称',

  `SHORT_CODE` varchar(5) COLLATE utf8mb4_binDEFAULT NULL,

  `DATE_FORMAT` varchar(20) COLLATE utf8mb4_binDEFAULT NULL,

  `FLOW_NO` int(11) DEFAULT NULL,

  `FLOW_NO_LEN` int(255) DEFAULT NULL,

  PRIMARY KEY (`TT_CODE`) USING BTREE

)

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC

COMMENT='票据类型';

 测试数据




创建存储过程:


DROPFUNCTION  IF EXISTS GetBillNo;


CREATEFUNCTION GetBillNo (ticketCode varchar(8))

 RETURNS varchar(50)

BEGIN

       UPDATE ticket_type set FLOW_NO = FLOW_NO+ 1 where TT_CODE = ticketCode;

       return (select concat(short_code, date_format(now(),`DATE_FORMAT`) , LPAD(right( concat('0000000000000000000000',cast(FLOW_NO aschar)),FLOW_NO_LEN),FLOW_NO_LEN,'0')) from ticket_type where tt_code =ticketCode) ; 

END;


使用方法


selectGetBillNo('01')


验证结果


你可能感兴趣的:(单据编号自动生成-SQL方案)