说明:
档案号的格式: 四位年+两位月+两位日+四位档案号
即:200202260001
档案编号表:记录当前最新的档案编号,只有一个记录.为了防止记录 出现重复的情况.
CREATE PROCEDURE prGetNo --产生按年月日排列的档案号
@No varchar(12) output ---为产生的档案号
AS
declare @Year Int,
@Month int,
@Day int,
@Temp_No varchar(12),
@NeedNo varchar(4) --档案号
BEGIN
select @year=Year(GetDate())
select @Month=Month(GetDate())
select @Day=Day(GetDate())
select @No=Str(@Year,4,0)+
(select
case
when @Month >=10 then Str(@Month,2,0)
when @Month <10 Then '0 '+Str(@Month,1,0)
end)+
(select
case
when @Day >=10 then Str(@Day,2,0)
when @Day <10 Then '0 '+Str(@Day,1,0)
end)
SELECT @Temp_No = 档案编号 FROM 档案编号表
IF @No < > SUBSTRING( @Temp_No,1,8)
SELECT @No = @No+ '0001 '
ELSE
BEGIN
SELECT @RandNo = STR(CONVERT(int,(SUBSTRING( @Temp_No ,9,4))+1),4,0)
SELECT @RandNo = REPLACE( @RandNo, ' ', '0 ')
SELECT @No = @No + @RandNo
END
UPDATE 档案编号表
SET 档案编号 = @No
END
END
给你参考!!!
档案号的格式: 四位年+两位月+两位日+四位档案号
即:200202260001
档案编号表:记录当前最新的档案编号,只有一个记录.为了防止记录 出现重复的情况.
CREATE PROCEDURE prGetNo --产生按年月日排列的档案号
@No varchar(12) output ---为产生的档案号
AS
declare @Year Int,
@Month int,
@Day int,
@Temp_No varchar(12),
@NeedNo varchar(4) --档案号
BEGIN
select @year=Year(GetDate())
select @Month=Month(GetDate())
select @Day=Day(GetDate())
select @No=Str(@Year,4,0)+
(select
case
when @Month >=10 then Str(@Month,2,0)
when @Month <10 Then '0 '+Str(@Month,1,0)
end)+
(select
case
when @Day >=10 then Str(@Day,2,0)
when @Day <10 Then '0 '+Str(@Day,1,0)
end)
SELECT @Temp_No = 档案编号 FROM 档案编号表
IF @No < > SUBSTRING( @Temp_No,1,8)
SELECT @No = @No+ '0001 '
ELSE
BEGIN
SELECT @RandNo = STR(CONVERT(int,(SUBSTRING( @Temp_No ,9,4))+1),4,0)
SELECT @RandNo = REPLACE( @RandNo, ' ', '0 ')
SELECT @No = @No + @RandNo
END
UPDATE 档案编号表
SET 档案编号 = @No
END
END
给你参考!!!
right(convert(varchar(10),getdate(),112),6)即为 年(2位数字)+月(两位数)+日(两位数)
convert(varchar,convert(int,rand()*100)) 即为(随机两位数)其他的自己加起来即可