declare @noid char(10)
declare cur_insert cursor for
select max(noid)+1
from table
open cur_insert
fetch cur_insert into @noid
while @@fetch_status = 0
begin
insert into table
values(@noid,.....................)
fetch cur_insert into @noid
end 
close cur_insert

解决方案 »

  1.   

    create table t (
    id int identity(1,1),
    col int,
    cid as cast(right(cast(10000000000+id as char(11)),10) as char(10))
    )insert t values (2)
    insert t values (2)
    insert t values (2)
    insert t values (2)select * from tid          col         cid        
    ----------- ----------- ---------- 
    1           2           0000000001
    2           2           0000000002
    3           2           0000000003
    4           2           0000000004(4 row(s) affected)
      

  2.   

    变量类型为varchar(20),自增字段?是sql server 吗?
    SQLSERVER 只支持数字类型的字段为自增字段;比如你把字段设置为BIGINT,自增,那么在插入的时候本来就是自己会增加的。
    FOE EXAMPLE:
    CREATE TABLE MYTABLE(MYFIELD1 BIGINT INDENTITY(1,1),MYFIELD2 CHAR(10))
    INSERT INTO MYTABLE(‘HELLLO’)
    如果你的确需要字段类型为VARCHAR(20)(假定字段名称为MYNUMBER),可以增加一个字段AUTOCODE (BIGINT,自增),写一个触发器,每次插入的时候,把AUTOCODE 的值赋给MYNUMBER就可以了(当然你可以把AUTOCODE 变为你需要的格式再赋给MYNUMBER)。