CREATE procEDURE [dbo].[GetID]
-- Add the parameters for the stored procedure here
@TableName varchar(64),
@TableID varchar(64) output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @s_Ident varchar(50),@d_Date DateTime, @s_Fill VARCHAR(1), @s_Type VARCHAR(3), @s_Date varchar(50),
@s_Head VARCHAR(10),@s_ID varchar(50)
--查询日期
select @d_Date =pci_date from pb_code_ident Where pci_table = @TableName
if(convert(nvarchar(50),@d_Date,111)=convert(nvarchar(50),Getdate(),111))--如果日期相等
BEGIN
--更新自增量
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
update pb_code_ident set pci_identity = pci_identity + 1 Where pci_table = @TableName
END
else
BEGIN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
update pb_code_ident set pci_identity = pci_default,pci_date=convert(nvarchar(50),Getdate(),111) Where pci_table = @TableName
END
--获取最新自增量
select @s_ID =pci_identity,@s_Head = pci_head from pb_code_ident Where pci_table = @TableName
set @TableID = @s_Head + convert(varchar(8),getdate(),112) +@s_ID;
END
GO
CREATE TABLE [dbo].[pb_code_ident](
[pci_table] [varchar](64) NOT NULL,
[pci_type] [varchar](64) NULL,
[pci_length] [int] NULL,
[pci_head] [varchar](8) NULL,
[pci_fill] [varchar](64) NULL,
[pci_date] [datetime] NULL,
[pci_default] [decimal](18, 0) NULL,
[pci_identity] [decimal](16, 0) NULL,
CONSTRAINT [PK_PB_Code_Ident] PRIMARY KEY CLUSTERED
(
[pci_table] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO