快速產生唯一單據序號

Mysql版

DELIMITER $$
DROP PROCEDURE IF EXISTS `GetMailNO`$$
CREATE DEFINER=`lrmis`@`%` PROCEDURE `GetMailNO`(OUT mailNO BIGINT)
BEGIN
 DECLARE t_error INTEGER DEFAULT 0;
 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;  -- 遇到異常后繼續 即設定@t_error=1 然後回滾,返回0
 SET mailNO=0;
 START TRANSACTION;   
     SELECT mail_seq INTO mailNO FROM lrmailseq FOR UPDATE; --排它鎖 
     SET mailNO=mailNO+1;
     UPDATE lrmailseq SET mail_seq=mailNO; 
  IF t_error = 1 THEN  
       ROLLBACK;
  ELSE
      COMMIT;
  END IF;
END$$
DELIMITER ;

SqlServer版

CREATE Procedure [iemis].[GetMailNO]   
(  
 @seqNO bigint output  
)  
as   
begin  
     begin tran  
        set @seqNO=1  
     select @seqNO=seq_no from lrmailseq with (updlock)  
         set @seqNO=@seqNO+1  
     update lrmailseq set seq_no=@seqNO  
     commit tran  
     if @@error>0  
         rollback tran  
end  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值