用newid()如:
select newid()

解决方案 »

  1.   

    你可以用
    insert 单锯表 select isnull(max(编号))+1,其他数据 from 单锯表
      

  2.   

    CREATE TABLE 单锯表
    (
     编号 int IDENTITY(1,1),
     其他属性 varchar(100)
    )
    goinsert 单锯表 (其他属性) values(@列值)
      

  3.   

    我现在是这样的,单号采用日期数字加三位数字递增的.
    写了下面这个存储过程.
    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就是出不到我想要的结果.
      

  4.   

    存储过程最后加select @newid 
    或者return @newid
      

  5.   

    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