create PROCEDURE [dbo].[CIS_GetNextNumer]
@Name nchar(2),-- number type
@NewNumber nvarchar(10) output -- new Number
AS
BEGIN
begin tran
UPDATE CISCO_Create_Number WITH(ROWLOCK)
SET @NewNumber = NumPrefix+RIGHT(POWER(10,NumPrefixLen)+CurrentNo+1,NumPrefixLen),
CurrentNo = CurrentNo+1
WHERE Name=@Name
commit tran
END
==调用
declare @Contract_ID nvarchar(10)
exec CIS_GetNextNumer 'co',@Contract_ID output
======表结构
CREATE TABLE [dbo].[CISCO_Create_Number](
[Name] [nchar](5) COLLATE Chinese_PRC_CI_AS NOT NULL,
[NumPrefix] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[CurrentNo] [int] NULL,
[NumPrefixLen] [int] NULL,
[NumDescription] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_CISCO_Create_Number] PRIMARY KEY CLUSTERED
(
[Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]