CREATE FUNCTION SpaceAdd(@Std_Ser varchar(30))
RETURNS varchar(30)
AS
BEGIN
declare @SpaceAdd varchar(30)
declare  @StrLen int
declare  @i int
set @StrLen=30-Len(@Std_Ser)
set @i=1
while @i<@StrLen
begin
  set @SpaceAdd='0' & @SpaceAdd--用while循环
  set @i=@i+1
end
return(@SpaceAdd)
end

解决方案 »

  1.   

    用下面的结构代替:    set @i=1
        while @i<=@strlen
          begin
            set @SpaceAdd='0' & @SpaceAdd
            set @i=@i+1
         end
      

  2.   

    CREATE FUNCTION SpaceAdd(@Std_Ser varchar(30))
    RETURNS varchar(30)
    AS
    BEGIN
    declare @SpaceAdd varchar(30)
    declare  @StrLen int
    declare  @i int
    set @StrLen=30-Len(@Std_Ser)
    set @i=1
    while @i<@StrLen
    -- For @ i=1 to @StrLen
    set @SpaceAdd='0' +@SpaceAdd
    -- next @i
    return(@SpaceAdd)
    end
    SQLServer里没for...next
      

  3.   

    还有怎么定义数组?
    declare @ArrSpace() varchar(30) 这样可以吗
      

  4.   

    CREATE FUNCTION SpaceAdd(@Std_Ser varchar(30))
    RETURNS varchar(30)
    AS
    BEGIN
    declare @SpaceAdd varchar(30)
    declare  @StrLen int
    declare  @i int
    set @StrLen=30-Len(@Std_Ser)
    set @i=1
    while @i<=@StrLen
    -- For @ i=1 to @StrLen
    set @SpaceAdd='0' +@SpaceAdd
    set @i=@i+1
    -- next @i
    return(@SpaceAdd)
    end
    我上面写错了
      

  5.   

    我用
    CREATE FUNCTION SpaceAdd(@Std_Ser varchar(30))
    RETURNS varchar(30)
    AS
    BEGIN
    declare @SpaceAdd varchar(30)
    declare  @StrLen int
    declare  @i int
    set @StrLen=30-Len(@Std_Ser)
    set @i=1
    while @i <@StrLen
    begin
    set @SpaceAdd='0' + @SpaceAdd
    set @i=@i+1
    end
    return(@SpaceAdd)
    end然后SELECT dbo.SpaceAdd(a) AS Expr1
    FROM bzzz
    Expr1都是Nullwhy
      

  6.   

    CREATE FUNCTION SpaceAdd(@Std_Ser varchar(30))
    RETURNS varchar(30)
    AS
    BEGIN
    declare @SpaceAdd varchar(30)
    declare  @StrLen int
    declare  @i int
    set @SpaceAdd=ltrim(rtrim(@Std_Ser))--加上这句来初始化字符串
    set @StrLen=30-Len(@Std_Ser)
    set @i=1
    while @i <@StrLen
    begin
    set @SpaceAdd='0' + @SpaceAdd
    set @i=@i+1
    end
    return(@SpaceAdd)
    end
      

  7.   

    CREATE FUNCTION SpaceAdd(@Std_Ser varchar(30))
    RETURNS varchar(30)
    AS
    BEGIN
    declare @SpaceAdd varchar(30)
    declare  @StrLen int
    declare  @i int
    set @StrLen=30-Len(@Std_Ser)
    set @i=1
    set @SpaceAdd=''     ----初始化一下
    while @i <@StrLen
    begin
    set @SpaceAdd='0' + @SpaceAdd
    set @i=@i+1
    end
    return(@SpaceAdd)
    end