SQL 数据库生成自动编号代码
2010-02-06 18:39
567 查看
--exec [P_AutoGenerateNumber] 'reception_apply','generate_code','',7
/*
过程说明:生成自动编号
创建时间:2010年1月12日
作者:feng
debug:尚未考虑编号溢出情况
*/
ALTER proc [P_AutoGenerateNumber]
(
@tableName varchar(100)='meeting_apply', --表名
@byteName varchar(100)='generate_code', --字段名
@Remark varchar(10)='M', --标示
@subLen int=4 --截取长度
)
WITH ENCRYPTION
as
declare @SQLString NVARCHAR(4000)
declare @OutputValue int
declare @subLenVar NVARCHAR(20)
declare @TempValue varchar(20)
set @subLenVar =convert(varchar(20),@subLen)
set @TempValue ='00000000000000000000'
declare @OutputValueToVar varchar(20)
set @SQLString = N'select @OutputValueEx=count(*) from '+@tableName+' where '+@byteName+' is not null or '+@byteName+'!='''''
EXECUTE sp_executesql @SQLString, N'@OutputValueEx int output',@OutputValueEx= @OutputValue output
if @OutputValue !=0
begin
SET @SQLString = N'SELECT @OutputValueEx=max(cast(right('+@byteName+','+@subLenVar+') as int))+1 FROM '+@tableName+' where '+@byteName+' is not null or '+@byteName+'!='''''
EXECUTE sp_executesql @SQLString, N'@OutputValueEx int output',@OutputValueEx= @OutputValue output
set @OutputValueToVar = cast(@OutputValue as varchar(20))
select @Remark+right(@TempValue,@subLen-len(@OutputValueToVar))+@OutputValueToVar as autocode
end
else --尚未生成编号
select @Remark+right(@TempValue,@subLen-1)+'1' as autocode
/*
过程说明:生成自动编号
创建时间:2010年1月12日
作者:feng
debug:尚未考虑编号溢出情况
*/
ALTER proc [P_AutoGenerateNumber]
(
@tableName varchar(100)='meeting_apply', --表名
@byteName varchar(100)='generate_code', --字段名
@Remark varchar(10)='M', --标示
@subLen int=4 --截取长度
)
WITH ENCRYPTION
as
declare @SQLString NVARCHAR(4000)
declare @OutputValue int
declare @subLenVar NVARCHAR(20)
declare @TempValue varchar(20)
set @subLenVar =convert(varchar(20),@subLen)
set @TempValue ='00000000000000000000'
declare @OutputValueToVar varchar(20)
set @SQLString = N'select @OutputValueEx=count(*) from '+@tableName+' where '+@byteName+' is not null or '+@byteName+'!='''''
EXECUTE sp_executesql @SQLString, N'@OutputValueEx int output',@OutputValueEx= @OutputValue output
if @OutputValue !=0
begin
SET @SQLString = N'SELECT @OutputValueEx=max(cast(right('+@byteName+','+@subLenVar+') as int))+1 FROM '+@tableName+' where '+@byteName+' is not null or '+@byteName+'!='''''
EXECUTE sp_executesql @SQLString, N'@OutputValueEx int output',@OutputValueEx= @OutputValue output
set @OutputValueToVar = cast(@OutputValue as varchar(20))
select @Remark+right(@TempValue,@subLen-len(@OutputValueToVar))+@OutputValueToVar as autocode
end
else --尚未生成编号
select @Remark+right(@TempValue,@subLen-1)+'1' as autocode
相关文章推荐
- MyBatis自动生成代码】根据数据库生成对应实体类,SQL方法等
- 【数据库SQL】自动生成编号功能
- 配置generatorConfig.xml自动生成的代码的sql书写问题
- 根据数据库自动生成java代码
- 【译】MVC3 20个秘方-(2)通过脚手架自动生成controller和view ----代码先行/数据库先行
- SQL怎样自动生成编号格式如:BV+YYYYMM+编号
- 自动生成表结构 sql 从已知数据库获得创建表的结构 sql server
- idea中mybatis generator自动生成代码配置 数据库是sqlserver
- access如何用代码在“默认值”里实现自动编号?单据流水号生成问题。
- C#分析数据库结构,使用XSL模板自动生成代码
- 第三十七讲 LINQ to SQL (利用VS自动生成的代码)
- 使用CodeSmith根据数据库中的表自动生成WinUI界面(使用TableLayoutPanel布局)的代码.
- C#分析数据库结构,使用XSL模板自动生成代码
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- 在数据库中自动生成编号的实现方法分享
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- 推荐SQL Server 重新恢复自动编号列的序号的sql代码
- PL/SQL自动生成代码