1.编写存储过程

存储过程需要先创建再使用
首先需要 create [你的数据库名]
注意把表名和数据库名改的和自己的一样,其他的cv就vans了。

create[你的数据库名]
GO
/****** Object:  StoredProcedure [dbo].[GetBillNo]    Script Date: 04/07/2020 14:57:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--时间:2020-04-07
--功能:获取单据号 @SBIID为单据内码入口参数,@active为活动方式,是获取还是保存 0-预取;1-正式取
--GetBillNo 18,0,''ALTER              procedure [dbo].[你的表名]
(@SBIID INT,@action int,--单据字符串   @BillString nchar(15) outPut
)
AS--是否日期declare @iDate as int--前缀declare @Prefix as char(7)--日期格式declare @dateFormat as varchar(8)--序号部分declare @serial as int--当天最大记录数declare @dayCount as int--定义最后修改时间declare @dtLastModi as datetime--定义今天日期declare @dtDay  as datetime--获取今天日期select @dtDay=Convert(datetime,left(getdate(),10))--获取是否含日期/日期格式select @iDate=SBNIfDate,@dateFormat=SBNDateFormat from sys_SysBillNo(你的表名,删去我和括号,改成你的表名) where sbiid=@SBIID if @action=1begin--获取最后修改日期select @dtLastModi=Convert(datetime,left(SBNLastModified,10)) from sys_SysBillNo(你的表名) where sbiid=@SBIID--如果今天日期不等于最后修改日期则把累加数清零--if @dtDay<>@dtLastModi--begin-- update sys_SysBillNo(你的表名) set SBNDayCount=0-- update sys_sysbillno(你的表名) set SBNLastModified=Getdate()--end--获取单据号begin tranupdate sys_sysbillno(你的表名) set sbndaycount=sbndaycount+1 where sbiid=@sbiidselect @Prefix=sbnprefix,@dayCount=sbndayCount from sys_SysBillNo(你的表名) where sbiid=@SBIIDcommit            --产生获取的单据号--if @iDate=0set @BillString=@Prefix+right('0000'+rtrim(cast(@dayCount as varchar(4))),4)elseBEGINif @dateFormat='YYYY'set @BillString=@Prefix+ltrim(CONVERT(char(2), GETDATE(), 12))+right('0000'+rtrim(cast(@dayCount as varchar(4))),4)ELSE IF @dateFormat='YYYYMM'set @BillString=@Prefix+ltrim(CONVERT(char(4), GETDATE(), 12))+right('0000'+rtrim(cast(@dayCount as varchar(4))),4)ELSE IF @dateFormat='YYYYMMDD'set @BillString=@Prefix+ltrim(CONVERT(char(6), GETDATE(), 12))+right('0000'+rtrim(cast(@dayCount as varchar(4))),4)END select @BillString returnendelse--预取单据号select @Prefix=sbnprefix from sys_SysBillNo(你的表名) where sbiid=@SBIID       if @@ROWCOUNT>0BEGINif @iDate=0set @BillString=@Prefix+'0000'elseBEGINif @dateFormat='YYYY'set @BillString=@Prefix+ltrim(CONVERT(char(2), GETDATE(), 12))+'0000'ELSE IF @dateFormat='YYYYMM'set @BillString=@Prefix+ltrim(CONVERT(char(4), GETDATE(), 12))+'0000'ELSE IF @dateFormat='YYYYMMDD'set @BillString=@Prefix+ltrim(CONVERT(char(6), GETDATE(), 12))+'0000'END select @BillStringReturnEND

2.建表

注意SBNIPrefix 这里可供编码的长短由

决定。自己录的一条数据如下图。

3.dao层

    /*** 自动获取编号* @param billType  这里传SBIID的值* @param action   这里传0 和 1 *  这里传0 和 1 * 传0 代表预选 一般用于页面单号还不需要生成的时候,比如新增的时候,不一        定确定,我们就可以传0 。* 传1 是真实的单号,一般用于新增确定,单号一定要生成的时候 自己会自增。* @return*/
String findPrestrainCode(@Param("billType") Integer billType, @Param("action") Integer action);

4.mapper

<select id="findPrestrainCode" resultType="String" statementType="CALLABLE">EXEC GetBillNo #{billType},#{action},'';
</select>

没什么业务就不走service了

5.Controller

/**

  • 自动获取编号
  • @param billType
  • @param action
  • @return
    */
    @RequestMapping("/getCode")
    @ResponseBody
    String findPrestrainCode(@Param(“billType”) Integer billType, @Param(“action”) Integer action){
    return receivingLiaisonDAO.findPrestrainCode(billType,action);
    }

测试类测试

测试结果

传0时,

传1时,

女神镇

自动生成编号的存储过程相关推荐

  1. MVVM 自动生成编号

    开发工具与关键技术:MVVM 撰写时间:2021年06月06日 先创建一个类来创建单号的样式,例如长度.样式(是数字还是字母,或者是数字和字母组成的)如下: // 根据单据数 日期生成单号 publi ...

  2. SQLServer中一个多用户自动生成编号的过程

    SQLServer中一个多用户自动生成编号的过程 if not exists (select * from dbo.sysobjects where id = object_id(N'[IndexTa ...

  3. mysql的自动编码_mysql 自动生成编号函数

    根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001  (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...

  4. id自动编号 php,php根据数据id自动生成编号的实现方法

    php根据数据id自动生成编号的实现方法 如下所示: /*编号=年份后两位+月份+id四位数*/ $id = $this->student_model->save(0, $data); $ ...

  5. html的编号自动生成,word怎么自动生成编号

    很多接触办公软件的新手,在word文档中对其中的序列号编排的时候可能还需要自己一个个的去输入数字;其实大可不必,那么下面就由学习啦小编为大家分享下word自动生成编号的技巧,希望能帮助您. word自 ...

  6. Word2016设置自动编号,每一级标题依附于父级标题自动生成编号(其他版本应该也一致)

    Word2016设置自动编号,每一级标题依附于父级标题自动生成编号(其他版本应该也一致) 经过多次间隔性的使用,终于下决心自己写一篇博客记录下来,收藏别人的,到用的时候总是会忘记一部分. 自己曾经乱七 ...

  7. endnote 参考文献加序号_EndNote在Word中插入文献不能自动生成编号 - 解决方案

    EndNote是一款科技论文文献管理软件,使用它可以很好的分类.筛选.阅读各类文献,在用word写科技论文时,只要应用它,就能很方便的在文章后面自动生成参考文献,用不着一点点按照格式费劲地去输入什么中 ...

  8. mysql生成序列_mysql 自动生成编号函数

    根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001  (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...

  9. 自动生成编号,id,序号,采用不同策略生成

    各种id生成策略 1:随机编号 1 public static String genImageName() { 2 //取当前时间的长整形值包含毫秒 3 long millis = System.cu ...

  10. java orcl自动_Oracle自动生成编号

    祝大家新年快乐,有任何问题可与我联系: 今天用JAVA向Oracle数据库中插数据时,每次都要去计算ID,觉得好麻烦,于是想到了用数据库自带的ID来做,具体如下: 1.首先得创建一序列 序列(SEQU ...

最新文章

  1. 两款带有WiFI的MicroPython模块:ESP32,ESP8266
  2. 碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
  3. 1.2 Java系统流
  4. poj2449(第k短路)
  5. SaltStack 第一板块入门介绍 [1]
  6. python数据分析实战案例logistic_Python机器学习随笔之logistic回归识别手写数字
  7. java mongodb 多文档_如何通过Java在MongoDB中一次性插入多个文档
  8. bzoj 3745 [Coci2015]Norma——序列分治
  9. java day15 【Map】
  10. 清华大学刘云浩教授——人工智能打开了潘多拉的盒子吗?
  11. P2 邹博机器学习logistic回归
  12. 苹果电脑怎么用移动硬盘ntfs?快速读取和编辑Mac外置移动硬盘
  13. 科学计算机隐藏功能,经常用手机计算器的抓紧看看,原来还隐藏着3个功能,涨知识了...
  14. 计算机组成原理(下)
  15. 7-9 是不是太胖了(5 分)
  16. SQLServer2008 快捷键集合
  17. Android 扫描、生成、识别二维码、条码 一库搞定
  18. AttributeError: builtin_function_or_method object has no attribute mktime
  19. 网络安全应急响应----7、数据泄漏应急响应
  20. java中的字符串排序

热门文章

  1. <第4个月>运营日记,shopee平台真的赚钱吗? Shopee卖家到底靠什么赚钱?
  2. pip install -Uqq 是什么意思?
  3. shader从入门到精通——(二)三大主流编程语言
  4. 南京大学计算机 国家重点实验室,南京大学
  5. excel如何把顺序倒过来_Excel中表格进行颠倒顺序的操作方法
  6. npm安装报错: errno ETIMEDOUT network request toXXX failed, reason: connect ETIMEDOUT
  7. 拦截图片代码 精易web浏览器_精易Web浏览器 UChk验证源码
  8. 【Microsoft Word 2010】页面部分双栏,添加脚注后导致双栏内容换页的解决方法
  9. Skills | word批量修改图片为统一大小
  10. 计算机加入域用户名,使用PowerShell重新命名计算机并加入域