序列表 批量的含义

USE DBname
GO
/****** Object:  StoredProcedure [dbo].[PROC_GETSEQUENCE_BATCH]    Script Date: 3/28/2019 3:55:58 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[PROC_GETSEQUENCE_BATCH]
    @TABLENAME VARCHAR(20),
    @USERID VARCHAR(50),
    @BATCH_NUM INT,
    @SEQNUM INT OUTPUT
AS
DECLARE @STEP INT, @NEXTID INT
BEGIN
    UPDATE SSEQUENCE WITH (ROWLOCK)
    SET
        @NEXTID = SEQ_NUM = ISNULL(SEQ_NUM, SEQ_BOUNDARY_L) + SEQ_STEP * abs(ISNULL(@BATCH_NUM,0)),
        @STEP = SEQ_STEP,
        SEQ_UPDATE_DT = GETDATE(),
        SEQ_UPDATEUID = @USERID
    WHERE
        UPPER(SEQ_TABLE) = UPPER(@TABLENAME)
        AND SEQ_PARTITION_KEY = 128
    
    SELECT @SEQNUM = @NEXTID - @STEP * abs(ISNULL(@BATCH_NUM,0))
END

  

在数据测试的时候,发现开发最容易犯的错是:

seq_num = 需要加的值+ seq_num  

在需要加的值这边用的是select count(*) from tablexxx, 会有null的场景出现,导致最终seq_num被更新为null+数字=null

转载于:https://www.cnblogs.com/qianjinyan/p/10616048.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值