首页 > 数据库 >单据编号自动生成-SQL方案

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

时间:2022-12-14 16:35:03浏览次数:33  
标签:CODE varchar NO DEFAULT SQL FLOW utf8mb4 单据 编号

单据编号生成SQL

 

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

创建编号定义表 ticket_type

DROP TABLE IF EXISTS `ticket_type`;

CREATE TABLE `ticket_type` (

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

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

  `SHORT_CODE` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,

  `DATE_FORMAT` varchar(20) COLLATE utf8mb4_bin DEFAULT 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='票据类型';

 

 

测试数据

TT_CODE

TT_NAME

SHORT_CODE

DATE_FORMAT

FLOW_NO

FLOW_NO_LEN

01

生产入库单

RK

%Y%m%d

1

3

02

销售出库单

XX

%Y%m%d

1

3

03

退货入库单

TR

%Y%m%d

1

3

 

 

创建存储过程:

 

DROP FUNCTION  IF EXISTS GetBillNo;


CREATE FUNCTION 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 as char)),FLOW_NO_LEN),FLOW_NO_LEN,'0')) from ticket_type where tt_code = ticketCode) ; 

END;

 

 

使用方法

 

select GetBillNo('01')

 

 

验证结果

 

 

标签:CODE,varchar,NO,DEFAULT,SQL,FLOW,utf8mb4,单据,编号
From: https://www.cnblogs.com/moonwebmast/p/16982507.html

相关文章

  • 基于jsp+sevlet+spring+mysql实现校园疫情防控管理信息系统
    @目录一、系统介绍二、采用技术及开发环境1.开发技术2.开发环境二、功能展示1.学校疫情统计2.各情况统计3.各学院学生情况统计4.各学院教师统计5.最新时报6.后台管理四、代......
  • jsp+sevlet+mysql图书管理系统
    @目录一、系统介绍二、功能展示1.图书查询(学生)2.借阅信息(学生)3.借阅历史(学生)4.借阅历史(管理员)5.读者管理(管理员)6.图书分类(管理员)7.图书借阅信息(管理员)8.图书......
  • mysql8权限控制
    CREATEUSER'test'@'xxx.xx.xx.%'IDENTIFIEDBY'123';grantallprivilegeson*.*to'test'@'xxx.xx.xx.%'IDENTIFIEDBY'123'withgrantoption;flushprivileg......
  • SpringBoot入门系列: JPA mysql(五)
    一,准备工作,建立spring-boot-sample-mysql工程1、http://start.spring.io/    A、Artifact中输入spring-boot-sample-mysql    B、勾选Web下的web    C、勾选......
  • 从SQL脚本中提取表小工具
     gspdemo.exeGeneralSQLParserDemo    ......
  • LeetCode-SQL-620. Not Boring Movies
    题目Xcityopenedanewcinema,manypeoplewouldliketogotothiscinema.Thecinemaalsogivesoutaposterindicatingthemovies’ratingsanddescriptions......
  • Sql Server 链接服务器 linked servers
    应用场景:A服务器数据库导入数据到B服务器数据库两种方案:1.链接服务器2.ImportandExportWizard(导入导出向导)方案分析:1.使用链接服务器的方式,较为灵活,创建好链......
  • 项目迁移中 遇到的MySQL问题
    两个问题都是数据库迁移导致的  1.Expression#16ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'sanghe.a.contract_no'whichisno......
  • docker-compose + mysql8.x 主从数据库配置
    0.准备(略过docker的安装与镜像拉取)docker/docker-compose安装拉取mysql8.x 1.master和slave的mysql配置master:[mysqld]server-id=11118log-bin=mysql-bi......
  • SqlServer获取当前日期
    获取当前日期selectGETDATE()格式化--2022-12-1413:42:14或20221214selectCONVERT(varchar,GETDATE(),120)--2022-12-1413:42:14selectCONVERT(varchar,G......