可以同用一个编码表
如下
只是简单的人
复杂的可分为两个表--建表
create table infoTableNo
(
NoId int primary key,       
NoName varchar(200),
NoTypeId int,       --编号类型(如:流水号,年月流水号,年月日流水号)
Prefix varchar(20),       --前缀
CurrentNo int,             --当前数字编号
NoPartLen int,             --编号数字部分长度
UpdateDate char(8)       --格式:20060517
)insert infoTableNo
select 1,'订单号',1,'ORD',0,4,''
select 2,'制造批号',1,'MRD',0,5,''
/*----------------------------------------
--创建表编号
--yys 2006/05/17
*/
create proc CreateTableNo
(
@ReturnCode int=0 output,
@ReturnCount int=0 output,
@NewNo varchar(100) output,
@NoId int--编号标识
)
as
--当前日期
declare @CurrentDate char(8)
set @CurrentDate=convert(char(8),getdate(),112)
begin transaction
--读取当天最新编号信息
declare @Prefix varchar(20)  --前缀
declare @CurrentNo int     --当前数字编号
declare @NoPartLen int     --编号数字部分长度
declare @UpdateDate char(8)  --最新更新日期        
select 
@Prefix=Prefix,
@CurrentNo=CurrentNo,
@NoPartLen=NoPartLen,
@UpdateDate=UpdateDate
from infoTableNo with(PAGLOCK)
where NoId=@NoIdselect @ReturnCode=@@error,@ReturnCount=@@rowcount
if @ReturnCode<>0 or @ReturnCount =0 goto RollbackAndReturn--这里只处理年月日流水号
if @UpdateDate=@CurrentDate 
begin
--判断数字编号是否在允许范围内
set @CurrentNo=@CurrentNo+1
if @CurrentNo>cast(replicate('9',@NoPartLen) as int) 
begin
select @ReturnCode=2,@ReturnCount=0
goto RollbackAndReturn
end --生产新的编号
set @NewNo=@Prefix+@CurrentDate+
replicate('0',@NoPartLen-len(@CurrentNo))+cast(@CurrentNo as varchar(20))
end 
else
begin
set @CurrentNo=1
--生产新的编号
set @NewNo=@Prefix+@CurrentDate+
replicate('0',@NoPartLen-len(@CurrentNo))+cast(@CurrentNo as varchar(20))
end --更新当前编号信息
update infoTableNo
set 
CurrentNo=@CurrentNo,
UpdateDate=@CurrentDate
where  NoId=@NoIdselect @ReturnCode=@@error,@ReturnCount=@@rowcount
if @ReturnCode<>0 or @ReturnCount =0 goto RollbackAndReturnCommitAndReturn:
commit transaction
goto ReturnResult
RollbackAndReturn:
rollback transaction
return
ReturnResult:
return 
--测试
declare @ReturnCode int
declare @ReturnCount int
declare @NewNo varchar(100)exec CreateTableNo @ReturnCode output,@ReturnCount output,@NewNo output,1print @ReturnCode
print @ReturnCount
print @NewNo--结果
0
1
ORD200605170004

解决方案 »

  1.   

    企业管理器
    --管理
    --SQL Server代理
    --右键作业
    --新建作业
    --"常规"项中输入作业名称
    --"步骤"项
    --新建
    --"步骤名"中输入步骤名
    --"类型"中选择"Transact-SQL 脚本(TSQL)"
    --"数据库"选择执行命令的数据库
    --"命令"中输入要执行的语句:
                         ***********************************************--确定
    --"调度"项
    --新建调度
    --"名称"中输入调度名称
    --"调度类型"中选择你的作业执行安排
    --如果选择"反复出现"
    --点"更改"来设置你的时间安排
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行设置方法:
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
      

  2.   

    我要插入一条记录到一个表中...那怎么调用这个存储过程
    比如一个表
    ID | 字段1 | 字段2 | 字段3
    那我
    insert 表(字段1,字段2,字段3)(值,值,值)
    这个ID的值怎么调用这个存储过程自动插入