• SQL Server序列号的获取


    建表:

     1 USE [JX_IMS_CPK]
     2 GO
     3 
     4 SET ANSI_NULLS ON
     5 GO
     6 
     7 SET QUOTED_IDENTIFIER ON
     8 GO
     9 
    10 CREATE TABLE [dbo].[WCS_Seq](
    11     [SeqType] [int] NOT NULL,
    12     [SeqVal] [bigint] NOT NULL,
    13     [SeqTime] [datetime] NOT NULL
    14 ) ON [PRIMARY]
    15 GO
    16 
    17 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'类型(1-任务单号)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'WCS_Seq', @level2type=N'COLUMN',@level2name=N'SeqType'
    18 GO
    19 
    20 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序列值' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'WCS_Seq', @level2type=N'COLUMN',@level2name=N'SeqVal'
    21 GO
    22 
    23 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序列时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'WCS_Seq', @level2type=N'COLUMN',@level2name=N'SeqTime'
    24 GO
    25 
    26 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序列表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'WCS_Seq'
    27 GO
    View Code

    获取序列:

     1 USE [JX_IMS_CPK]
     2 GO
     3 
     4 SET ANSI_NULLS ON
     5 GO
     6 SET QUOTED_IDENTIFIER ON
     7 GO
     8 ALTER    PROCEDURE    [dbo].[WCS_GetTaskCode]
     9     @O_TaskCode    VARCHAR(50)=NULL    OUTPUT
    10 --获取【任务号】
    11 AS
    12     BEGIN
    13         DECLARE    @V_SeqType        INT=1,            --类型
    14                 @SeqCount        INT,
    15                 @NowTime        DATETIME=CAST(GETDATE()    AS    DATE),
    16                 @SeqVal            BIGINT,
    17                 @SeqTime        DATETIME,
    18                 @NextVal        BIGINT=1;
    19         
    20         SELECT  @SeqCount = COUNT(1)
    21         FROM    WCS_Seq    a
    22         WHERE    a.SeqType=@V_SeqType;
    23         
    24         IF    @SeqCount = 0
    25             BEGIN
    26                 INSERT    INTO    WCS_Seq
    27                 SELECT  @V_SeqType,@NextVal,@NowTime;
    28                 SET    @O_TaskCode=RIGHT(CONVERT(VARCHAR(50),@NowTime,112),6)+RIGHT('0000'+CAST(@NextVal    AS    VARCHAR(4)),4);
    29                 SELECT    @O_TaskCode;
    30                 RETURN;
    31             END;
    32         
    33         SELECT TOP 1
    34                 @SeqVal = a.SeqVal ,
    35                 @SeqTime = a.SeqTime
    36         FROM    WCS_Seq a
    37         WHERE    a.SeqType=@V_SeqType;
    38         
    39         IF @SeqTime = @NowTime
    40             SET @NextVal = @SeqVal + 1;
    41         ELSE
    42             SET @NextVal = 1;
    43         
    44         UPDATE  a
    45         SET     a.SeqVal = @NextVal ,
    46                 a.SeqTime = @NowTime
    47         FROM    WCS_Seq a
    48         WHERE   a.SeqVal = @SeqVal
    49             AND    a.SeqType=@V_SeqType;
    50         
    51         SET    @O_TaskCode=RIGHT(CONVERT(VARCHAR(50),@NowTime,112),6)+RIGHT('0000'+CAST(@NextVal    AS    VARCHAR(4)),4);
    52     END;
    View Code

    使用方法:

     1 USE [JX_IMS_CPK]
     2 GO
     3 
     4 DECLARE    @return_value int,
     5         @O_TaskCode varchar(50)
     6 
     7 EXEC    @return_value = [dbo].[WCS_GetTaskCode]
     8         @O_TaskCode = @O_TaskCode OUTPUT
     9 
    10 SELECT    @O_TaskCode as N'@O_TaskCode'
    11 
    12 SELECT    'Return Value' = @return_value
    13 
    14 GO
    View Code

    结果:

    2004080008

    0

  • 相关阅读:
    Python排列函数:sort、sorted
    Python高阶函数:map、reduece、filter
    Python:容器、迭代对象、迭代器、生成器及yield关键字
    JPA-映射-(@OneToOne)双向一对一
    JPA-映射-(@OneToMany、@ManyToOne)双向一对多
    JPA-映射-(@OneToMany)单向一对多
    JPA-映射-(@ManyToOne)单向多对一
    JPA-EntityManager.merge()
    JPA-API
    leetcode 2.Add Two Numbers
  • 原文地址:https://www.cnblogs.com/keepee/p/12659594.html
Copyright © 2020-2023  润新知