请问能用SQL写出这样的函数吗
还是要用别的语言?

解决方案 »

  1.   

    select cast(序号 as int) from 表
      

  2.   

    try
    insert table1 value(right('00000'+cast(@id_int as varchar(5)),5),……)
      

  3.   

    数据库里有个事件触发器(trigger)概念,也就是你可以为insert,drop,delete等写一些事件响应函数。你可以在你的insert的trigger里实现你的流水号。触发器怎么做,你参考一下书,我也说不清!
    还有一个问题是,流水号是唯一的,你用select找出当前表中最大的流水号,然后加1,这样并不安全--要考虑到并发操作的情况。我只知道在Interbase里,有一个生成器(generator)的机制,就是为这种自动生成字段定义一个全局的计数器变量,每使用它一次,就可以加1。但我不知道sql server里是怎么实现的。
    good luck
      

  4.   

    select max(序号) into :ls_max from tabel;
    if isnull(ls_max) then 
       ls_max = '00001'
    else
       ls_max = string(long(ls_max) + 1,'00000')
    end if