declare @GetYMD varchar(20)
      declare @GetMax varchar(20)
              
             @GetYMD='200509010001' 
             @GetMax=convert(varchar,convert(bigint,@GetYMD)+1)
             print @GetMax

解决方案 »

  1.   

    declare @GetYMD varchar(20)
          declare @GetMax varchar(20)
                  
                 set @GetYMD='200509010001' 
                 set @GetMax=convert(varchar,convert(bigint,@GetYMD)+1)
                 print @GetMax/*
    200509010002
    */
      

  2.   

    自己一位一位地加吧,这不是VBS,他会自动把字符转为数字
      

  3.   

    服务器: 消息 248,级别 16,状态 1,过程 Jxw_GetBh,行 11
    varchar 值 '200509290001' 的转换溢出了 int 列。超出了最大整数值。
    存储过程: hoteldb.dbo.Jxw_GetBh
    返回代码 = -6
    输出参数: 
    @Jxw_bh = 200509290001
    -----郁闷
      

  4.   

    CREATE procedure Jxw_GetBh
                     @Jxw_bh varchar(20) output as 
    begin
           
          declare @GetYMD varchar(8)
          declare @GetMax varchar(20)
                   select @GetYMD=convert(varchar,getdate(),112)
                   
             select @GetMax=max(lsh) from Jxw_service where left(lsh,8)=@GetYMD
          if @getmax>0
                  begin
                        select @Jxw_bh=convert(varchar,convert(bigint,@GetMax)+1)--这里为什么会错
                         return
                   end 
             else
                 begin
                    select @Jxw_bh=@GetYMD+'0001'
                    return  
    end
    end
    GO
      

  5.   

    已经转化为bigint了。所以应该没有错误。楼主可以贴一下错误。
      

  6.   

    代码我贴出来了,上面的那个是存储过程代码,执行这个存储过程出现错误务器: 消息 248,级别 16,状态 1,过程 Jxw_GetBh,行 11
    varchar 值 '200509290001' 的转换溢出了 int 列。超出了最大整数值。
    存储过程: hoteldb.dbo.Jxw_GetBh
    返回代码 = -6
    输出参数: 
    @Jxw_bh = 200509290001
    -----郁闷
      

  7.   

    1. 检查你的数据里是否有不可转换为bigint类型的字符串
    2. 获取此存储过程输出参数的地方也要用bigint
      

  8.   

    varchar 值 '200509290001' 的转换溢出了 int 列
    ===========>
    你应该转换为bigint,而不是int
      

  9.   

    楼上的都已经说的很清楚了。
    按照你后来修改的贴出的那个存储过程,不可能再出现
    varchar 值 '200509290001' 的转换溢出了 int 列
    这样的错误的。
    所以请你检查一下,这个过程的内容是否就是你后来贴出的内容。同时确定运行时的库是否正确。
      

  10.   

    我在查询分析器运行这个存储过程的,就出现这个错误!我都快要郁闷死了:(
    请你们耐心帮帮我:)务器: 消息 248,级别 16,状态 1,过程 Jxw_GetBh,行 11
    varchar 值 '200509290001' 的转换溢出了 int 列。超出了最大整数值。
    存储过程: hoteldb.dbo.Jxw_GetBh
    返回代码 = -6
    输出参数: 
    @Jxw_bh = 200509290001
    -----郁闷
      

  11.   

    --在查询分析器中运行下面的内容。看结果是什么,贴出来。
    CREATE procedure Jxw_GetBh_test
                     @Jxw_bh varchar(20) output as 
    begin
           
          declare @GetYMD varchar(8)
          declare @GetMax varchar(20)
                   select @GetYMD=convert(varchar,getdate(),112)
                   
             select @GetMax=max(lsh) from Jxw_service where left(lsh,8)=@GetYMD
          if @getmax>0
                  begin
                        select @Jxw_bh=convert(varchar,convert(bigint,@GetMax)+1)--这里为什么会错
                         return
                   end 
             else
                 begin
                    select @Jxw_bh=@GetYMD+'0001'
                    return  
    end
    end
    GO
    --运行
    declare @out varchar(20)
    exec Jxw_GetBh_test @out output
    select @out
    go--删除
    drop procedure Jxw_GetBh_test
    go
      

  12.   

    declare @GetYMD varchar(20)
          declare @GetMax varchar(20)
                  
                 set @GetYMD='200509010001' 
                 set @GetMax=left(@GetYMD,8)+right('0000'+convert(varchar(4),convert(int,right(@GetYMD,4))+1),4) --这里为什么会出错???
                 print @GetMax       --我想得到的结果是200509010002