生成单据编号


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[sp_getbi](@comp_id varchar(8),@type varchar(50),@flag char(1))
as
/*
功能描述:取下一个编号
参数说明:
@comp_id:公司编号
@type:编号类型
@flag:标志(R:读取下一个编号;W:读出下一个编号,同时提交到数据库)
测试:
execute sp_getbi('','','')
select * from sys_number
*/
begin
declare @rtn int
--select * from sys_number
--1、如果数据库没有则插入数据库,如果类型为R,则插入0,如果是类型是W,则插入1
if not exists(select * from sys_number where comp_id=@comp_id and number_type=@type)
begin
if upper(@flag)='R'
begin
insert into sys_number(comp_id,number_type,number) values(@comp_id,@type,0)
end
else
begin
insert into sys_number(comp_id,number_type,number) values(@comp_id,@type,1)
end
select 1
return
end
else--1、如果数据库有,则取出值加1作为n,如果类型为R,则直接返回n,如果是类型是W,修改number为n,返回n
begin
select @rtn=number from sys_number where comp_id=@comp_id and number_type=@type
select @rtn=isnull(@rtn,0) + 1
if upper(@flag)='W'
begin
update sys_number set number=@rtn where comp_id=@comp_id and number_type=@type
end
select @rtn
return
end
end
GO

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

 

GO
/****** 对象: Table [dbo].[sys_number] 脚本日期: 03/21/2013 17:54:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[sys_number](
[comp_id] [varchar](8) COLLATE Chinese_PRC_CI_AS NOT NULL,
[number_type] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[number] [int] NULL,
[memo] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY CLUSTERED
(
[comp_id] ASC,
[number_type] 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
SET ANSI_PADDING OFF
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'公司编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'sys_number', @level2type=N'COLUMN',@level2name=N'comp_id'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'编号类型' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'sys_number', @level2type=N'COLUMN',@level2name=N'number_type'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'sys_number', @level2type=N'COLUMN',@level2name=N'number'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'备注' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'sys_number', @level2type=N'COLUMN',@level2name=N'memo'

 

--execute sp_getbi '001','purchase','r'

posted @ 2013-03-21 18:18  kuailewangzi1212  阅读(389)  评论(0编辑  收藏  举报