--创建实现自动增加收集号的函数
CREATE FUNCTION SJL_GETID()
RETURNS  VARCHAR(20)
AS
BEGIN
RETURN (select convert(varchar(10,getdate(),112)+right('000'+ltrim(row_number()over(order by getdate())),2) from 收集蓝)
end
帮我看一下错误,或者帮我重新优化一下代码,我想实现日期+编号的函数,例如201207101,2012071202,2012071203……

解决方案 »

  1.   


    --不用函数 直接查 即可
    select convert(varchar(10),getdate(),112)+right('000'+ltrim(row_number()over(order by getdate())),2) from 收集蓝
      

  2.   

    但是你这样只能获得今天的日期+编号。这是你想要的么select CONVERT(varchar,getdate(),112)+RIGHT('000'+LTRIM(row_number() over (order by getdate())),2) from t_a
      

  3.   

    你的意思是在每次插入数据的时候调用这个函数生成编号插入到这个字段里面是么?如果是这样那么你这样写会有bug的
    比如当前是05,而你删除了02的记录,那么下一条记录还是05。就会生成两条05的编号的记录这个01,-05建议你用自增列identity,这样就不会有这种问题,
    只是如果你删除记录后会编号不连续
      

  4.   

    CREATE FUNCTION SJL_GETID()
    RETURNS VARCHAR(20)
    AS
    BEGIN
    RETURN (select convert(varchar(10)--这里掉了半边括号
    ,getdate(),112)+right('000'+ltrim(row_number()over(order by getdate())),2) from 收集蓝)
    end