close
簡單描述一下.在Insert/Update時使用Trigger.
中使用PROCEDURE.即可完成自動編碼.
功能流程就像SUMMER說的一樣.
提共簡單的編碼方式.這只是Idea而已.要管控及強大.
自行想想羅.但已滿足功能的需求~
sample1:
代碼: |
CREATE PROCEDURE [test2] @table varchar(20), @field varchar(20) AS declare @len1 int declare @sno varchar(10) declare @YYYYMM varchar(6) declare @strSql varchar(100) --取得年月 IF len(DatePart(month, getDate())) <2 set @YYYYMM=cast(DatePart(year, getDate()) as varchar) + '0' + cast(DatePart(month, getDate()) as varchar) Else set @YYYYMM=cast(DatePart(year, getDate()) as varchar) + cast(DatePart(month, getDate()) as varchar) --取得編號 set @strSql='select max('+ @field +') from '+ @table +' where substring('+ @field +' ,1,6)='+ @YYYYMM --set @sno= (select max( @field ) from @table where substring( @field ,1,6)= @YYYYMM) print @strSql exec (@strSql) print @sno GO |
sample2:
代碼: |
/*自動編號 */ CREATE PROCEDURE usp_自動編號1 @sno char(10) output AS declare @YYYYMM char(6), @ano char(10) /* 取得年月 */ if datepart(month,getdate())<10 select @YYYYMM=str(datepart(year,getdate()),4)+'0'+str(datepart(month,getdate()),1) else begin select @YYYYMM=str(datepart(year,getdate()),4)+str(datepart(month,getdate()),2) end /* 取得資料表之編號 */ select @ano=(select max(報價單號) from 客戶報價單檔 where substring(報價單號,1,6)=@YYYYMM) /* 給定編號*/ if @ano is null begin select @sno=rtrim(@YYYYMM)+'0001' /*print @sno*/ end else begin select @sno=str(convert(int,max(@ano))+1) /*print @sno*/ end GO |
全站熱搜
留言列表