表inset_id 只有一个字段id,记录所有生成的ID号,注意这个ID不是自增型,内容如下:STU060001
STU060002
STU060003
....表student,中的一个字段ID和它对应。如果是新建一条记录,则生成的ID是 max(insert_id.id)+1,再处理一下得到的,然后同时INSERT到表insert_id和表student中。请问如果表student需要连续获取若干个ID,该如何处理。如果用循环应该不是很合理吧??能给个方法吗? 我对SQL2K的存储过程编写还不够熟练,所以卡住了。还请狐友帮忙啊!!比如现在要生成新的10个id号(因为sert_id中目前最后一个是3,所以下面得到的第一个肯定是4):
STU060004
STU060005
STU060006
STU060007
STU060008
STU060009
STU060010
STU060011
STU060012
STU060013该怎么写啊?????

解决方案 »

  1.   

    SELECT TOP 10 
     'STU0' +  (SELECT SUBSTRING(MAX(ID),5,5) + (SELECT CONVERT(VARCHAR,COUNT(1)) FROM SYSOBJECTS WHERE ID <= O.ID) FROM inset_id)
    FROM SYSOBJECTS O 
      

  2.   


    declare @iLen int
    ,@iPos int
    ,@vPreStr varchar(100)select @iLen=10
    ,@iPos=2
    ,@vPreStr='STU'select @vPreStr+right(cast(1000000+1 as varchar),6)
    ---
    具体的用法就要看楼主的了
      

  3.   

    http://blog.csdn.net/hopewell_go/archive/2006/07/29/998518.aspx
    这是我写的,可以看看
      

  4.   

    二楼(vovo2000(没人要的猫)) 代码太深奥了,看不懂啊,麻烦解释一下,好吗??三楼只是单一编号的思路,没什么作用,类似4楼的WHILE循环操作吗? 那样效率会很低的
      

  5.   

    vovo2000(没人要的猫)   的语句确实很精妙,花了很长时间,也没真正理解(自身条件筛选本来就很抽象),但总算看懂了!!如果使用系统表SYSOBJECTS 恐怕不行吧??? 如果我要是一次得到1000条呢? 恐怕系统表SYSOBJECTS里面没有1000条记录吧???
    不过非常感谢 vovo2000  尽管直接引用你的语句得到的是错误,但你给的思路是正确的,好人帮忙帮到底,该参照哪个表可以不用顾虑数量的限制,即不管一次生成多少条记录都可以,哪怕几十万个。
      

  6.   

    如果使用系统表SYSOBJECTS 恐怕不行吧??? 如果我要是一次得到1000条呢? 恐怕系统表SYSOBJECTS里面没有1000条记录吧???
    from syscolumns a,syscolumns b
    from syscolumns a,syscolumns b......这样够了吧 ^^