sql 自動生成編號函數


下面是一個用sql生成自動編號的函數,希望對大家有幫助。。
/**
   PoNumber----函數名
   pono---- 字段名
   po---表名字

**/

create  function PoNumber(@a datetime) returns varchar(50)
begin
   declare @id varchar(50),@i int
   select top 1 @id=pono from dbo.po where left(pono,8)= convert(varchar(8),@a,112)  order by pono desc
   if @@rowcount=0
      return convert(varchar(8),@a,112)+'001'
   set @i= rtrim(right(@id,3))  +1
   set @id=rtrim(@i)
   return convert(varchar(8),@a,112)+right( '000'+@id ,3 )
end

效果如下

 

第二種 根據每天時間,不同類型,編號新的一天從0001開始

如下

Create procedure [dbo].[SP_NumberingRule](
@HeadType nvarchar(50)
)
as

begin
--定義變量
declare @Puid varchar(50) --唯一uid
declare @i int
declare @Big varchar(100) --結尾自增編號 0001
declare @Date VARCHAR(100) --當前時間 八位數日期
declare @Letter varchar(100) --字母開頭 DJBH
declare @Centretime varchar(100) --中間時間 20180110
declare @Dudate varchar(100) --賦值時間,使用
DECLARE @Mcount VARCHAR(50)

set @Date = CONVERT(varchar(8) , getdate(), 112 ) --當前時間

---開啟事務
BEGIN TRAN

select top 1 @Puid = Uid, @Letter = CharacterFormat,@Dudate=StDatetime , @Big = DigitFormat,@Centretime= StDatetime , @Mcount = Conbination from BasicsManage B where B.name = @HeadType --獲取編號規則

begin

--如果當前時間大於表中字段時間
if (@Date> @Dudate)
begin
set @i= rtrim(@Big) +1
set @Big= rtrim(@i) --編號從0000開始遞增
set @Mcount = @Letter + @Date + right(REPLICATE('0',4) + rtrim(@Big),4)
UPDATE BasicsManage SET Conbination = @Mcount ,StDatetime = @Date where Uid = @Puid and Name = @HeadType
end

else
begin
print(@Mcount)
set @Big=rtrim(right(@Mcount,4)) +1 --原來基礎上自增
set @Mcount = @Letter + @Date + right(REPLICATE('0',4) + rtrim(@Big),4)
UPDATE BasicsManage SET Conbination = @Mcount ,StDatetime = @Date where Uid = @Puid and Name = @HeadType
end

end

begin
commit tran; --執行成功將會添加數據
SELECT @Mcount
end
end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM