set ansi_nulls on
goset quoted_identifier on
gocreate 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)
endelse
begin
insert into sys_number(comp_id,number_type,number) values(@comp_id,@type,1)
end
select 1
return
endelse--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
endend
goset ansi_nulls off
goset quoted_identifier off
gogo
/****** 物件: table [dbo].[sys_number] 指令碼日期: 03/21/2013 17:54:41 ******/
set ansi_nulls on
goset quoted_identifier on
goset ansi_padding on
gocreate 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]
goset ansi_padding off
goexec 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'
goexec 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'
goexec 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'
goexec 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'
自動生成單據號
計算id 使用 表級排它鎖 防止使用者同時修改該記錄 create procedure getid xh integer,id integer out as 如果想在連線一中鎖住整個表,不允許其他事務更新表中任何記錄,但可以讀取記錄,可使用holdlock選項,即 holdlock 等同於 seri...
自動生成單據號
計算id 使用 表級排它鎖 防止使用者同時修改該記錄 create procedure getid xh integer,id integer out as 如果想在連線一中鎖住整個表,不允許其他事務更新表中任何記錄,但可以讀取記錄,可使用holdlock選項,即 holdlock 等同於 seri...
單據編號的生成
1.單據編號的構成 為了避免重複及保持有序性,單據編號通常格式為 關鍵字 yymmdd n位流水號,當然具體規則會根據業務需 要變化,包括 年月日的顯示變化和流水號的位數變化 及編號公升序 例如 ys0812250001,ys200812250001,ys2008120001,ys081225001...