sql自动生成流水号
创建表
CREATE TABLE CreateSerialNo
(CreateSerialNoId INT PRIMARY KEY IDENTITY(1,1),TableName VARCHAR(60),FixedCharacter VARCHAR(20),--FixedCharacterLatestDate VARCHAR(8),MaxSerialNo INT ,DataVersion timestamp
)
创建存储过程
-- =============================================
-- Author: <HK0272>
-- Create date: <2023/03/13>
-- Description: <自动生成流水号>
-- =============================================
CREATE PROCEDURE [dbo].[GetSerialNo_DoMethod]
@SerialNo nvarchar(100)='' output,
@TableName varchar(100),--表名
@FixedCharacter VARCHAR(20), --固定字符
@PadLeft INT, --流水号位数
@ShowDate BIT, --1加年月日(A230313001) 0不加年月日(A001)
@RiseTime datetime --传入年月日
AS
BEGINSET NOCOUNT ON;BEGIN TRYBEGIN TRAN--传入时间为空则自动获取当前时间IF ISNULL(@RiseTime,'')=''BEGINSET @RiseTime=GETDATE()END DECLARE @MaxValue INT,@DataVersion timestamp,@DefaultDateTime VARCHAR(8)IF NOT EXISTS(SELECT 1 FROM CreateSerialNo WHERE TableName=@TableName AND FixedCharacter=@FixedCharacter)BEGININSERT INTO CreateSerialNo(TableName,FixedCharacter,LatestDate,MaxSerialNo)VALUES (@TableName,@FixedCharacter,CONVERT(VARCHAR(20),@RiseTime,112),1)ENDELSEBEGINSELECT @DataVersion=DataVersion,@DefaultDateTime=LatestDate FROM CreateSerialNo WHERE TableName=@TableName AND FixedCharacter=@FixedCharacter--如果不显示日期,不受日期限制,每次自增+1IF @ShowDate=0BEGINUPDATE CreateSerialNo WITH(ROWLOCK) SET MaxSerialNo=MaxSerialNo+1WHERE TableName=@TableName AND FixedCharacter=@FixedCharacter AND DataVersion=@DataVersionENDELSEBEGIN--如果在同一天,流水叫已,否则更新日期并重置最大流水号IF @DefaultDateTime=CONVERT(VARCHAR(12),@RiseTime,112)BEGINUPDATE CreateSerialNo WITH(ROWLOCK) SET MaxSerialNo=MaxSerialNo+1WHERE TableName=@TableName AND FixedCharacter=@FixedCharacter AND DataVersion=@DataVersionENDELSEBEGINUPDATE CreateSerialNo WITH(ROWLOCK) SET LatestDate=CONVERT(VARCHAR(12),@RiseTime,112),MaxSerialNo=1WHERE TableName=@TableName AND FixedCharacter=@FixedCharacter AND DataVersion=@DataVersionENDENDENDSELECT @SerialNo=FixedCharacter+(CASE @ShowDate WHEN 1 THEN RIGHT(LatestDate,6) ELSE '' END)+(RIGHT(replicate('0',@PadLeft)+CAST(MaxSerialNo AS VARCHAR(10)),@PadLeft))FROM CreateSerialNo WITH(XLOCK,PAGLOCK) WHERE TableName=@TableName AND FixedCharacter=@FixedCharacterCOMMIT TRANEND TRYBEGIN CATCHROLLBACK TRANEND CATCHreturn 0
END
调用
declare @SerialNo nvarchar(50)=''
declare @InspectDate datetime=getdate()
--获取编号
exec GetSerialNo_DoMethod @SerialNo=@SerialNo output,@TableName='TestTableName',--表名@FixedCharacter='', --固定字符@PadLeft=3, --流水号位数@ShowDate=1, --是否包含时间 1:是(A230313001)0:否(A001)@RiseTime=@InspectDate--生成时间,为空默认抓当前时间select @SerialNo
sql自动生成流水号相关推荐
- 【深入浅出MyBatis系列八】SQL自动生成插件
为什么80%的码农都做不了架构师?>>> #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...
- 使用sql自动生成测试数据
在进行代码编写的时候,常常会用到大量的测试数据.手动的进行测试数据的编写费时费力,下面给大家介绍一个使用sql自动生成测试数据的方法. 1)建立测试数据表 CREATE TABLE `datatabl ...
- sql自动生成工具_可自动生成代码,5款基于AI的开发工具
如今,对机器学习潜力感兴趣的程序员都在讨论,如何使用人工智能和基于人工智能的软件开发工具构建应用程序.例如PyTorch和TensorFlow之类的解决方案. 除此之外,机器学习技术正以另一种有趣的方 ...
- 自动生成小工具(二):根据建表sql自动生成增删改查sql语句文件
Mybatis自动生成插件虽然功能强大,但是也略显笨重.我自己开发了一个自动生成的小工具,更加简单,更加轻量级. 一共只有几百行代码,想改的话,直接修改即可.根据自己的实际情况,可以进行灵活的二次开发 ...
- Spring Data JPA使用必备(二):Spring Data JPA方法命名规则实现SQL自动生成
Spring data JPA是一个好东西,但是对于很多习惯于写SQL,直接怼数据库的人来说,这个真的用不习惯,还被一致认为是一个不易于程序员发展的技术.因为JPA提供了标准的封装,在操作数据库的时候 ...
- hive sql自动生成id的两种方法随机id和自增id
文章目录 1.生成自增id:row number() over(order by) 2.随机不重复id: regexp_replace(reflect('java.util.UUID','random ...
- sql自动生成汉语拼音和首字母函数[转载]
/*根据汉字获取全拼1.生成所有读音临时表2.根据Chinese_PRC_CS_AS_KS_WS 排序获取读音 */ CREATE function f_GetPying(@str varchar(1 ...
- sql自动生成编码函数
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER function [dbo].[f_NextJD]() rETURNS CHAR(9) AS B ...
- Oracle自动生成ID,自动编号,自增补零填充
问题 在pl/sql中,需将某个查询结果插入到一个新表tableNameA中时,如何通过sql自动生成ID列,且形如:ID0001,ID0002,ID0003--. 解决方案 insert into ...
最新文章
- c语言x在二进制表示下1的个数,算法:计算十进制数字在二进制表示1的个数,...
- 计算机导论摘要,[计算机导论复习摘要.doc
- DL之YoloV3:YoloV3论文《YOLOv3: An Incremental Improvement》的翻译与解读
- 树形结构:二叉树,分治,合并子树,递归
- P1297 [国家集训队]单选错位 期望
- apache.camel_Apache Camel 2.11发布
- 使用反射处理Java批注
- 34个计算机网络易错知识点总结
- coverage path planning覆盖路径规划(2021-左海民 )
- GCC9.2/Python3.8/Libvirt6.0/QEMU4.2 编译/配置/安装
- SQL Server 数据库中的几个常见的临界值
- layui框架弹出窗口,点击确定跳转指定地址
- 简历里计算机能力,简历上计算机能力怎么写
- 一网打尽!所有PMP的计算公式都在这里啦,赶紧学起来(1)
- Qcom平台测试wifi TIS需要关闭wifi扫描、漫游和休眠
- 清理win7系统盘空间
- html5 audio左侧,HTML5之Audio(四)—— 左右声道
- OpenCV-Python击中击不中HITMISS形态变换详解
- 计算机一级考试PPT部分几分,计算机一级考试PPT幻灯片和最后一题(就是自己输网址)各有多少分啊...
- mysql数据库下载、安装、使用
热门文章
- 使用Yolov5训练自己制作的数据集,快速上手
- PMP报名入口在哪里?不废话!
- 平价气传导耳机哪个牌子好?气传导耳机推荐这几款
- 光速不变_两点技术:以光速解决阵列问题
- Markdown语法学习笔记(Typora)
- K210(SiPEED MaixBit)MicroPython使用参考(七、RTC模块DS1302驱动)
- 水清冷冷:AE CC2018安装图文教程攻略(附工具),windows系统64位
- Oracle 自定义类型TYPE(subtype, type object, type body, type table) 用法
- 把极坐标化为直角坐标c语言,极坐标与直角坐标的互化
- 【内含实物图】一款可独立行走且支持远程对话的微型巡逻摄像头——硬件方案