我现在是这样的,单号采用日期数字加三位数字递增的. 写了下面这个存储过程. CREATE PROCEDURE getnewid @tablename varchar, @oldid varchar, @newid varchar output AS begin tran select @oldid=substring(lastid,1,6) from nextid where tablename=@tablename if @oldid=convert(varchar(20),getdate(),12) set @newid=convert(varchar(20),getdate(),12)+convert(varchar,(convert(int,substring(@oldid,7,3))+1)) else set @newid=convert(varchar(20),getdate(),12)+'001' update nextid set lastid=@newid where tablename=@tablename commit tran if @@error>0 rollback tran GO 帮我看看有什么错.另外我在DELPHI中调用出错了. procedure Tfrmding.SpeedButton1Click(Sender: TObject); begin spid.Close; spid.Parameters.ParamByName('@tablename').Value:='dingdan'; spid.ExecProc; edit2.Text:=spid.Parameters.parambyname('@newid').Value; end;SPID是一个ADOSTOREDPROC EDIT2就是出不到我想要的结果.
存储过程最后加select @newid 或者return @newid
CREATE PROCEDURE getnewid @tablename varchar, @oldid varchar, @newid varchar output AS begin tran select @oldid=substring(lastid,1,6) from nextid where tablename=@tablename if @oldid=convert(varchar(20),getdate(),12) /* set @newid=convert(varchar(20),getdate(),12)+convert(varchar,(convert(int,substring(@oldid,7,3))+1)) */ set @newid=convert(varchar(20),getdate(),12)+right('000'+convert(varchar(3),(convert(int,substring(@oldid,7,3))+1)),3)else set @newid=convert(varchar(20),getdate(),12)+'001' update nextid set lastid=@newid where tablename=@tablename if @@error<>0 rollback tran else commit tran GO
insert 单锯表 select isnull(max(编号))+1,其他数据 from 单锯表
(
编号 int IDENTITY(1,1),
其他属性 varchar(100)
)
goinsert 单锯表 (其他属性) values(@列值)
写了下面这个存储过程.
CREATE PROCEDURE getnewid
@tablename varchar,
@oldid varchar,
@newid varchar output
AS
begin tran
select @oldid=substring(lastid,1,6) from nextid where tablename=@tablename
if @oldid=convert(varchar(20),getdate(),12)
set @newid=convert(varchar(20),getdate(),12)+convert(varchar,(convert(int,substring(@oldid,7,3))+1))
else
set @newid=convert(varchar(20),getdate(),12)+'001'
update nextid set lastid=@newid where tablename=@tablename
commit tran
if @@error>0 rollback tran
GO
帮我看看有什么错.另外我在DELPHI中调用出错了.
procedure Tfrmding.SpeedButton1Click(Sender: TObject);
begin
spid.Close;
spid.Parameters.ParamByName('@tablename').Value:='dingdan';
spid.ExecProc;
edit2.Text:=spid.Parameters.parambyname('@newid').Value;
end;SPID是一个ADOSTOREDPROC
EDIT2就是出不到我想要的结果.
或者return @newid
@tablename varchar,
@oldid varchar,
@newid varchar output
AS
begin tran
select @oldid=substring(lastid,1,6) from nextid where tablename=@tablename
if @oldid=convert(varchar(20),getdate(),12)
/*
set @newid=convert(varchar(20),getdate(),12)+convert(varchar,(convert(int,substring(@oldid,7,3))+1))
*/
set @newid=convert(varchar(20),getdate(),12)+right('000'+convert(varchar(3),(convert(int,substring(@oldid,7,3))+1)),3)else
set @newid=convert(varchar(20),getdate(),12)+'001'
update nextid set lastid=@newid where tablename=@tablename
if @@error<>0
rollback tran
else
commit tran
GO