sql产生流水号
一个产生流水号(年月日+5位流水号)的存储过程
现在客户有一个需求,要产生一个流水号,如090611+000001(年月日+五位流水号),此流水号在数据库表中是主键,且为varchar类 型。如果在当天之内插入此流水号,则此流水号递增,即:090611000001,090611000002,090611000003,如果不是在当天 时间,必须从090612000001开始递增。我写了个存储过程实现它。
create procedure test_proc
@id nvarchar(13) output
as
begin
set nocount on
declare @date nvarchar(8),
@maxdj_no numeric(13,0)
select @date = convert(nvarchar(20),getdate(),112) , @maxdj_no = convert(numeric(13,0),max(id)) from XT_DJNO
if substring(convert(char(20),@maxdj_no),1,6) = substring(@date,3,8) --如果当日已经产生单据编号
begin
select @id = convert(nvarchar(13),@maxdj_no+1)
--print(@maxdj_no+1)
insert into XT_DJNO values(substring(@id,3,13),substring(convert(char(20),@maxdj_no),1,6))
--print(substring(convert(char(20),@maxdj_no),1,6))
return
end
else
begin
set @date=substring(@date,3,8)
set @id = @date + '00001'
insert into XT_DJNO values(@id,convert(nvarchar(13),@maxdj_no))
--print(substring(@date,3,8))
return
end
end
ORACLE中生成流水号 创建一个序列:
create sequence EXAMPLE_SEQ
increment by 1
start with 1
minvalue 1
cache 20;
在EXAMPLE表上创建一个触发器
CREATE OR REPLACE TRIGGER "PORTAL".TRI_EXAMPLE_TABLE BEFORE INSERT ON EXAMPLE_TABLE FOR EACH ROW
begin
select to_char(sysdate,'YYYYMMDD')||to_char(EXAMPLE_SEQ.nextval,'0000') into :new.EXAMPLE_ID from dual;
end;
首先在数据库中创建一个存放流水号的表
CREATETABLE[dbo].[NumSeq] ( ) NOTNULL , ) NOTNULL , [Seq][int]NULL , [CrTime][datetime]NOTNULL )
上面的代码中,Cate 字段为流水号的头,可以在下面的存储过程中用参数的方式传入,我的定义是2个字符,这个可以根据具体需要更改
DateNo 字段为获取日期信息
Seq 字段为流水号,但最终生成的流水号是这三个字段的相加
创建存储过程
CREATEPROC dpPMT_SGetMaintainSeq ) ) IFNOTEXISTS(SELECT*FROM NumSeq WHERE Cate) BEGININSERTINTO NumSeq(Cate,DateNo,Seq) ) ENDELSEBEGINUPDATE NumSeq SET SeqWHERE Cate),MONTH(GETDATE())) ),Seq) FROM NumSeq WHERE Cate),MONTH(GETDATE())) SELECT@MaintainNo
这个存储过程最终输出的结果如:AA071031000001 前面两位是传入的参数,中间四位是年份的后两位和月,最后的六位为6位数字的流水号。您也可以修改上面的存储过程来生成符合您要求的流水号
最新文章
- linux-linux top 命令各参数详解
- struts2案例
- ACCESS应用笔记<;五>;——慢慢要学会做项目管理&#183;
- iOS 打包iPa
- 【前台 submit的重复提交 错误】submit的重复提交
- SQL Server批量数据导出导入BCP使用
- Java程序员学C#基本语法两个小时搞定(对比学习)
- .NET通用权限系统快速开发框架
- 数以百万计美元的融资YO是什么东东?
- Perl面向对象(1):从代码复用开始
- [HBase_1] HBase安装与配置
- dep包安装与依赖库
- 75.iOS内存管理
- [HDFS_2] HDFS 的 Shell 操作
- 爬虫解析库——BeautifulSoup
- php url链接地址传数组方法 json_decode解析数组失败 经过url链接的json数组解析出错的解决方法 (原)
- trufflesuite/truffle-hdwallet-provider
- 20145302张薇 《网络对抗技术》逆向及BOF基础实践
- go语言基础之不同目录
- lvm笔记