1、
CREATE PROCEDURE sptest1  
    @Out  varchar(100)  output
AS
begin
    declare @i int
    select @i = cast(rand()*1000000 as int)
    set @out = right('0000000'+cast(@i as varchar(7)),7)
end
2、
select convert(char(8),getdate(),112)

解决方案 »

  1.   

    1、
    CREATE PROCEDURE sptest1  
        @Out  varchar(100)  output
    AS
    begin
        declare @i int
        select @i = cast(rand()*1000000 as int)
        set @out = right('0000000'+cast(@i as varchar(7)),7)
        return
    end
    2、
    select convert(char(8),getdate(),112)
      

  2.   

    /*
        输入数字,产生一个7位字符串
        调用: 
        declare @in int,@out varchar(10)
        select @in=10
        exec sptest1 @in,@Out output
        select @out
    */
    CREATE PROCEDURE sptest1  
    @In varchar(100),
    @Out varchar(100)   output
    AS
    if isnumeric(@In)=0
    begin
         raiserror('请输入数字',12,1)
         return
    end        if convert(int,@In)>9999999
    begin
         raiserror('请输入0-9999999之间的数字',12,1)
         return
    end

    select @Out=right(convert(varchar,10000000+convert(int,@In)),7)
    go
      

  3.   

    --形如20050824数字
    select replace(convert(char(10),getdate(),120),'-','')
      

  4.   

    1.
    CREATE PROC  sptest1  
    @In varchar(100),
    @Out varchar(100)   output
    AS BEGIN
    IF LEN(@In)>7 
    RETURN
    SET @Out=RIGHT(10000000+@In,7) 
    RETURN
    END--调用
    DECLARE @a varchar(100)
    EXEC sptest1 '12345',@a output 
    SELECT @a--结果
    0012345(所影响的行数为 1 行)2.
    SELECT CONVERT(CHAR(8),GETDATE(),112)
      

  5.   

    1.select right('0000000'+@out,7)
    2.select convert(varchar,getdate(),112)
      

  6.   

    1.select right('0000000'+@out,7)
    2.select substring(replace(convert(varchar(20),getdate(),120),'-',''),1,8)
      

  7.   

    1.SELECT REPLICATE('0', 7 - DATALENGTH(@out)) + @out
    2.select convert(varchar,getdate(),112)
      

  8.   

    SELECT STUFF(STUFF(CONVERT(char(8),getdate(),112),5,0,N''),8,0,N'')+N''