declare @GetYMD varchar(20)
declare @GetMax varchar(20)
@GetYMD='200509010001'
@GetMax=convert(varchar,convert(bigint,@GetYMD)+1)
print @GetMax
declare @GetMax varchar(20)
@GetYMD='200509010001'
@GetMax=convert(varchar,convert(bigint,@GetYMD)+1)
print @GetMax
declare @GetMax varchar(20)
set @GetYMD='200509010001'
set @GetMax=convert(varchar,convert(bigint,@GetYMD)+1)
print @GetMax/*
200509010002
*/
varchar 值 '200509290001' 的转换溢出了 int 列。超出了最大整数值。
存储过程: hoteldb.dbo.Jxw_GetBh
返回代码 = -6
输出参数:
@Jxw_bh = 200509290001
-----郁闷
@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
varchar 值 '200509290001' 的转换溢出了 int 列。超出了最大整数值。
存储过程: hoteldb.dbo.Jxw_GetBh
返回代码 = -6
输出参数:
@Jxw_bh = 200509290001
-----郁闷
2. 获取此存储过程输出参数的地方也要用bigint
===========>
你应该转换为bigint,而不是int
按照你后来修改的贴出的那个存储过程,不可能再出现
varchar 值 '200509290001' 的转换溢出了 int 列
这样的错误的。
所以请你检查一下,这个过程的内容是否就是你后来贴出的内容。同时确定运行时的库是否正确。
请你们耐心帮帮我:)务器: 消息 248,级别 16,状态 1,过程 Jxw_GetBh,行 11
varchar 值 '200509290001' 的转换溢出了 int 列。超出了最大整数值。
存储过程: hoteldb.dbo.Jxw_GetBh
返回代码 = -6
输出参数:
@Jxw_bh = 200509290001
-----郁闷
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
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